문제

모든 컨트롤러가 상속받는 컨트롤러가 있고 모든 컨트롤러 요청에 대해 일부 코드를 실행해야 합니다.나는 다음을 시도했다:

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에 구축하는 것이 더 나을 것입니다.후임자가 컨트롤러를 올바르게 구현할 것이라고 어떻게 보장합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top