Frage

Ich habe einen Controller, der alle meine Controller erben von und ich brauche einen Code für jeden Controller Anforderung auszuführen. Ich habe versucht, die folgenden:

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);
}

Aber anscheinend Sitzungszustand ist in der Execute-Methode, bis nach dem Aufruf von base.Execute () nicht zur Verfügung, die für mich nicht funktioniert. Gibt es einen Ort, wo ich diesen Session-Code für jede Anforderung in ASP.NET MVC ausführen kann?

War es hilfreich?

Lösung

Versuchen OnActionExecuted in den Basis-Controller überschreiben oder die Funktionalität als Filter implementiert.

Andere Tipps

Wenn Sie etwas wollen, auf jede Anforderung in einer ASP.NET-Anwendung passieren, sind Sie wahrscheinlich besser dran, es in ein IHttpModule bauen, anstatt sie in einen Controller zu bauen. Wie garantieren Sie Ihren Nachfolger des Controllers korrekt umsetzen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top