web-dev-qa-db-fra.com

RedirectToAction ne fonctionne pas du tout

Dans le AccountController, à la fin d'une méthode, j'ai:

RedirectToAction("EveryView", "Account");

Dans le même fichier de contrôleur, j'ai cette méthode:

public ActionResult EveryView()
    {
        return View();
    }

Mais cette méthode n'est jamais appelée. J'ai un point d'arrêt sur '{' et il ne sera jamais touché!

15
petko_stankoski

Humm… difficile de voir (ou de dire) quel est le problème car le code semble assez trivial.

Un peu de débogage pourrait peut-être aider! Essayez de créer un nouveau TestController avec la valeur par défaut Index () ActionResult, procédez comme suit:

return RedirectToAction("EveryView", "Test");

Ensuite, créez la méthode EveryView () ActionResult et définissez votre point d'arrêt.

public ActionResult EveryView()
{
    return View();
}

Si vous essayez http: // localhost/Test/Index que se passe-t-il? Est-ce que ça marche?

Si cela ne fonctionne pas, vous voudrez peut-être examiner vos itinéraires et vous assurer que vous n’avez pas défini d’itinéraires particuliers qui pourraient faire bouger les choses.

Alternativement, vous pouvez, dans votre Global.asax ajouter cette méthode:

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
}

Et définissez un point de rupture sur la ligne pour détecter les erreurs inconnues.

10
Vlince

vous avez mis 'retour' sinon il ne sera pas redirigé.

return RedirectToAction("EveryView", "Account");

55
Bonanza

J'ai eu ce problème aussi dans mon projet récent. Je l'ai finalement résolu en ajoutant [AllowAnonymous] à l'action redirigée, car le contrôleur est décoré de l'attribut [Authorize] et l'utilisateur n'est pas connecté. A ce stade, il s'agit d'une aide.

8
user2192287

J'avais un problème similaire. Je viens de supprimer l'attribut post [HttpPost] de la fonction vers laquelle j'ai redirigé. 

1
ilans

J'ai eu ce problème et c'est parce qu'un filtre personnalisé MustBeLoggedIn que j'avais ajouté n'autorisait pas la redirection vers cette méthode, similaire à user2192287.

Cela signifiait que le filtre me redirigeait vers l'action à partir de laquelle je partais.

C'était peut-être le problème de petko_stankoski, comme c'était le cas dans leur contrôleur de compte.

1
tekiegirl

Si la méthode Action n'est pas appelée, cela peut être dû au fait que la méthode est enregistrée pour HttpPost mais que vous envoyez une requête HttpGet. Il vaut donc mieux garder la méthode pour accepter les deux requêtes en utilisant [AcceptVerbs (HttpVerbs.Get | HttpVerbs.Post)]

0
Raj