Utilisation RedirectToAction dans l'API Web
Je suis en utilisant RedirectToAction dans mon ASP.Net WebAPI application et j'ai essayé la suivante.
return RedirectToAction("AuthenticateUser", "AuthenticationServiceWebApi", new RouteValueDictionary
{
{"userName", model.UserName},
{"password", model.Password}
});
Cela génère la redirection comme ci-dessous.
127.0.0.1:81/authenticationservicewebapi/authenticateuser/admin/admin@123
Mais, depuis que je suis en utilisant WebAPI, j'ai besoin d'être l'URL comme ci-dessous.
127.0.0.1:81/api/authenticationservicewebapi/authenticateuser/admin/admin@123
Comment puis-je faire cela?
OriginalL'auteur Thilok Gunawardena | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de savoir comment votre routage, Web API d'action de la signature de regarde comme je vais donc essayer de deviner.
Quelques choses n'ont pas vraiment ajouter jusqu'ici (pourquoi voudriez-vous passer le mot de passe dans l'url?)
mais...
Compte tenu de votre structure d'url je suppose que votre routage est quelque chose comme:
Ensuite, étant donné que, je suppose que votre authenticateuser doit être quelque chose comme:
Si oui, alors rediriger vers ce à partir d'un contrôleur MVC vous avez besoin:
RedirectToAction
est MVC, Web API.Oui, vous pouvez contourner ce problème en utilisant la Redirection qui prend une chaîne et en passant il y a une Api Web de l'itinéraire url construire avec UrlHelper. Pas joli, mais je ne suis pas sûr de ce que l'OP est d'essayer d'atteindre.
Fonctionne bien, merci beaucoup.
Ce n'est pas la façon dont contrôleurs d'API sont censés être utilisés. Il y a une raison
{action}
doit être ajouté ici, parce que les contrôleurs d'API sont censés avoir des fins spécifiques, et ne pas être rempli avec de nombreuses actionsOriginalL'auteur Filip W
Si l'utilisateur n'est pas authentifié, vous ne devriez pas de redirection. Il n'y a habituellement aucun utilisateur interactif à l'autre extrémité de sorte que vous devriez vraiment retourner le Code d'État HTTP 401 au lieu de redirection.
Il n'y a pas d'équivalent dans ASP.NET l'API Web.
Si vous insistez de le faire alors le voici: c'est
Vous jeter
HttpResponseException
:Je doute aussi que vous avez compris ce que je voulais dire. Mais de toute façon ici est une mise à jour si vous insistez pour le faire.
OriginalL'auteur Aliostad
J'en suis venu avec une solution simple. Pas très bon comme ci-dessus, mais le partage de la valeur.
Merci à Vous tous.
OriginalL'auteur Thilok Gunawardena