asp.net mvc重定向到会话到期时登录

时间:2017-08-29 06:25:41

标签: asp.net-mvc asp.net-mvc-4 session

如果会话在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{}

为什么不重定向?

1 个答案:

答案 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 代码无用。