我有一个Web应用程序,最近才开始随机丢失会话。确切的原因最多是难以捉摸的,但是似乎会话在服务器端被杀死/丢失并导致用户需要完全关闭他们的浏览器并重新启动才能重新登录。
我希望我能提供一些代码,但我无法弄清楚问题出在哪里。
以下是我们目前使用的会话操作过滤器:
public class SessionExpireAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpContext lvContext = HttpContext.Current;
//if(
// check if session is supported
if (lvContext.Session != null)
{
// check if a new session id was generated
if (lvContext.Session.IsNewSession)
{
// If it says it is a new session, but an existing cookie exists, then it must
// have timed out
string sessionCookie = lvContext.Request.Headers["Cookie"];
if ((null != sessionCookie) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0))
{
lvContext.Response.Redirect("~/Account/Timeout");
}
}
}
base.OnActionExecuting(filterContext);
}
}
答案 0 :(得分:1)
您是否添加了从根目录或其任何子目录添加或删除文件的新功能?这可能导致会话重置。
答案 1 :(得分:0)
最终我转移到SQL State Server来处理我的会话。这会将会话处理外包给SQL服务器,允许会话通过循环等持续存在。有关更多信息,请参阅以下链接: