我们在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中写入一些数据。所以请详细指导我。感谢