ASP.NET MVC Web应用程序 - 会话随机失败

问题描述:

我有一个Web应用程序,刚刚开始随机丢失会话。确切的原因至多是难以捉摸的,但是看起来会话在服务器端被杀死/丢失,并且导致用户需要完全关闭浏览器并重新启动才能重新登录。ASP.NET MVC 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); 
    } 
} 

最终我转移到SQL状态服务器来处理我的会话。这种外包会话处理到SQL服务器允许的会话经再循环等欲了解更多信息,坚持看到这些链接:

你添加新的功能,从根目录或任何子目录添加或删除文件?这可能会导致会话重置。

+0

AFAIK它的唯一文件夹删除,导致此,添加和删除文件应该没问题,除非你从/ bin和/ App_Data文件夹中添加和删除它们。此外,通过编程方式修改Web.config文件可能会导致App Domain重新启动。检查你的代码是不是在任何地方做这些事情。如果删除文件夹是一个问题,请告诉我,我知道解决办法。 – 2010-06-29 08:42:11

+0

我最近添加了两个基于Web的图像编辑器,但它们只添加/删除临时tiff文件。除非我们发布新版本,否则Web.config永远不会以编程方式或手动方式更改。 – alan 2010-06-29 13:13:28

+0

临时解决方案是每100次调用后回收App Pool。这大大降低了我们的事故率。 – alan 2010-08-17 16:13:38