使用ActionFilter属性的会话超时

时间:2018-10-24 10:53:35

标签: c# asp.net-mvc

我试图使用Actionfilterattribute和Filter config中的onexecuting函数处理会话超时问题,并在所有控制器之上调用了该属性。在会话超时后执行应用程序后,页面中没有任何反应。相反,如果我在应用程序上单击某些内容,它将把我重定向到注销页面。我需要自动进行此操作。该页面应自动刷新,如果会话过期,则重定向到注销页面。

我的过滤器配置代码如下:

public class SessionTimeoutAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContext context = HttpContext.Current;
            if (context.Session != null)
            {
                if (context.Session.IsNewSession)
                {
                    string sessionCookie = context.Request.Headers["Cookie"];

                    if (sessionCookie != null)
                    {

                        FormsAuthentication.SignOut();
                        string redirectTo = "";
                        if (!string.IsNullOrEmpty(context.Request.RawUrl))
                        {

                            HttpContext.Current.Session.Abandon();
                            redirectTo = string.Format("~/Login/Logout", HttpUtility.UrlEncode(context.Request.RawUrl));
                            //filterContext.Result = new RedirectResult(redirectTo);
                            return;
                        }

                    }
                }
            }

            base.OnActionExecuting(filterContext);
        }
    }

Web.config也设置为:

<sessionState mode="InProc" timeout="2" />

请有人帮我...我想念什么?

0 个答案:

没有答案