我一直在使用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
。
先谢谢了。