如果会话在asp.net mvc 4.5中过期,我正在尝试进行简单的重定向登录页面。我正在尝试如下。
Global.asax中
protected void Session_OnEnd(object sender, EventArgs e)
{
Response.RedirectToRoute("Default"); //default is route
}
但是这里出现null异常并且找不到响应对象。我已经看过this帖子,但由于它非常广泛而无法弄清楚。
更新
我已尝试按如下方式应用过滤器,现在它不会崩溃,但也不会重定向到错误页面。
SessionTimeoutAttribute
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
if (HttpContext.Current.Session["SchoolCode"] == null)
{
filterContext.Result = new RedirectResult("~/Views/Shared/Error");
return;
}
base.OnActionExecuting(filterContext);
}
向Controller类添加了属性
[SessionTimeout]
public class MapsController : Controller{}
为什么不重定向?
答案 0 :(得分:0)
我不得不改变我的代码
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext ctx = HttpContext.Current;
if (HttpContext.Current.Session["SchoolCode"] == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(
new { action = "Login", controller = "Account" }));
//return;
}
base.OnActionExecuting(filterContext);
}
忽略 Session_OnEnd 代码无用。