如何处理MVC 3中的会话超时

viv*_*vek 3 asp.net-mvc session-timeout action-filter

我遇到频繁的会话超时问题.

我想编写一个可以在每个控制器上使用的通用过滤器,过滤器应该将用户重定向到登录,并在登录后返回用户发送最后一个请求的位置.

gra*_*ram 5

你可以尝试这样的事情:

public class SessionExpireAttribute : ActionFilterAttribute {
    public override void OnActionExecuted(ActionExecutedContext filterContext) {
        base.OnActionExecuted(filterContext);
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (filterContext.HttpContext.Session != null) {
            if (filterContext.HttpContext.Session.IsNewSession) {
                var sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"];
                if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0)) {
                    // redirect to login
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)