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服务器允许的会话经再循环等欲了解更多信息,坚持看到这些链接:
答
你添加新的功能,从根目录或任何子目录添加或删除文件?这可能会导致会话重置。
AFAIK它的唯一文件夹删除,导致此,添加和删除文件应该没问题,除非你从/ bin和/ App_Data文件夹中添加和删除它们。此外,通过编程方式修改Web.config文件可能会导致App Domain重新启动。检查你的代码是不是在任何地方做这些事情。如果删除文件夹是一个问题,请告诉我,我知道解决办法。 – 2010-06-29 08:42:11
我最近添加了两个基于Web的图像编辑器,但它们只添加/删除临时tiff文件。除非我们发布新版本,否则Web.config永远不会以编程方式或手动方式更改。 – alan 2010-06-29 13:13:28
临时解决方案是每100次调用后回收App Pool。这大大降低了我们的事故率。 – alan 2010-08-17 16:13:38