Question

J'ai un contrôleur dont tous mes contrôleurs héritent et j'ai besoin d'exécuter du code pour chaque demande de contrôleur. J'ai essayé ce qui suit:

protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
    if (Session["mallDetected"] == null)
    {
        Session["mallDetected"] = DateTime.Now.Ticks;
        IList<Mall> malls = Mall.FindNearestByIp(Request.UserHostAddress);

        if (malls.Count > 0)
        {
            Session["mall"] = malls[0];
        }
    }

    base.Execute(requestContext);
}

Mais apparemment, l'état de session n'est pas disponible dans la méthode Execute avant APRÈS l'appel à base.Execute (), ce qui ne fonctionne pas pour moi. Y at-il un endroit où je peux exécuter ce code de session pour chaque demande dans ASP.NET MVC?

Était-ce utile?

La solution

Essayez de remplacer OnActionExecuted dans le contrôleur de base ou d'implémenter la fonctionnalité en tant que filtre.

Autres conseils

Si vous souhaitez que quelque chose se passe dans une application ASP.NET à chaque requête, il vaut probablement mieux l'intégrer dans un IHttpModule plutôt que dans un contrôleur. Comment garantissez-vous que votre successeur implémentera votre contrôleur correctement?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top