ASP.NET MVC의 모든 요청에 대해 코드 실행
-
05-07-2019 - |
문제
모든 컨트롤러가 상속받는 컨트롤러가 있고 모든 컨트롤러 요청에 대해 일부 코드를 실행해야 합니다.나는 다음을 시도했다:
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);
}
그러나 분명히 base.Execute()를 호출한 후까지는 Execute 메서드에서 세션 상태를 사용할 수 없습니다. 이는 저에게 적합하지 않습니다.ASP.NET MVC의 각 요청에 대해 이 세션 코드를 실행할 수 있는 장소가 있습니까?
해결책
재정의 시도 OnActionExecuted
기본 컨트롤러에서 또는 기능을 필터로 구현합니다.
다른 팁
모든 요청에 대해 ASP.NET 응용 프로그램에서 어떤 일이 발생하도록 하려면 컨트롤러에 구축하는 것보다 IHttpModule에 구축하는 것이 더 나을 것입니다.후임자가 컨트롤러를 올바르게 구현할 것이라고 어떻게 보장합니까?
제휴하지 않습니다 StackOverflow