本文介绍了如何处理会话超时在MVC 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有频繁的会话超时问题。

I am having issues with frequent Session Time Out.

我想写我可以每个控制器上使用共同的过滤器,过滤器应该将用户重定向到登录,登录回从那里用户发送的最后一个请求后。

I want to write a common filter that I could use on each controller, filter should redirect the user to login and after log in back to from where user sent the last request.

推荐答案

您可以尝试这样的事:

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
                }
            }
        }
    }
}

这篇关于如何处理会话超时在MVC 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-14 07:30