Ausführen von Code auf jeder Anforderung in ASP.NET MVC
-
05-07-2019 - |
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?
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?