如何在sql server ASP.Net MVC中进行会话管理时捕获会话超时

时间:2014-09-24 07:22:37

标签: asp.net-mvc-4

我们在sql server中管理。我开始知道当我们在sql server中管理会话时,会话结束事件永远不会触发...,。是真的吗?在我们管理sql server中的会话时,只需指导我如何捕获会话超时。谢谢

修改

我从mvc中的stackoverflow获得了处理会话超时的代码。这是

public class SessionExpireFilterAttribute : ActionFilterAttribute
    {

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpContext ctx = HttpContext.Current;

            // check if session is supported
            if (ctx.Session != null)
            {

                // check if a new session id was generated
                if (ctx.Session.IsNewSession)
                {

                    // If it says it is a new session, but an existing cookie exists, then it must
                    // have timed out
                    string sessionCookie = ctx.Request.Headers["Cookie"];
                    if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
                    {
                        string redirectOnSuccess = filterContext.HttpContext.Request.Url.PathAndQuery;
                        string redirectUrl = string.Format("?ReturnUrl={0}", redirectOnSuccess);
                        string loginUrl = FormsAuthentication.LoginUrl + redirectUrl;
                        if (ctx.Request.IsAuthenticated)
                        {
                            FormsAuthentication.SignOut();
                        }
                        RedirectResult rr = new RedirectResult(loginUrl);
                        filterContext.Result = rr;
                        //ctx.Response.Redirect("~/Home/Logon");

                    }
                }
            }

            base.OnActionExecuting(filterContext);
        }
    }

如何使用此类SessionExpireFilterAttribute什么是动作过滤器? 只是写这个类不会调用函数OnActionExecuting我猜....所以指导我还需要做什么,因为应该为每个动作调用OnActionExecuting函数。

还指导我得到的代码它解决了我的目的,因为我在sql server中管理会话状态...所以我猜会话结束永远不会解雇。以上代码是否帮助我捕获会话结束,因为我需要在会话结束时在db中写入一些数据。所以请详细指导我。感谢

0 个答案:

没有答案