MVC-Application_EndRequest不保留会话

时间:2019-07-18 07:18:41

标签: c# asp.net-mvc session custom-error-pages

我一直在使用HttpSessionStateBase会话来保留登录用户的数据。在我的应用中导航时,该会话正在按预期方式工作。问题出在处理我的自定义错误页面时。我使用了Application_EndRequest中的Global.asax来获取 404 StatusCode ,并重定向到我的自定义错误页面。

protected void Application_EndRequest()
{
   if (Context.Response.StatusCode == 404)
   {
      Response.Clear();

      RouteData routeData = new RouteData();
      HttpContextBase currentContext = new HttpContextWrapper(HttpContext.Current);
      var lang = RouteTable.Routes.GetRouteData(currentContext).Values["language"];
      routeData.Values["language"] = lang;
      routeData.Values["controller"] = "Error";
      routeData.Values["action"] = "NotFound";

      IController customErrorController = new ErrorController();
      customErrorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
   }
}

进入错误页面时,我发现我丢失了会话(是null),无法恢复。

我采用这种方法来处理错误页面,因为我的页面在其路线中使用语言。例如:/en/Error/NotFound/es/Error/NotFound

先谢谢了。

0 个答案:

没有答案