2013-04-28 63 views
3

我有一个奇怪的问题,在ASP .NET MVC 4.在的AccountController我做某些动作重定向和将数据放入的TempData之前(存储在会议):会议结束后随机重定向

[AllowAnonymous] 
public ActionResult Activate(string token) 
{ 
    new CustomSignupService().Activate(token); 
    TempData["Message"] = "User was successfully confirmed"; 
    return RedirectToAction("Message", "Home") 
} 

现在我知道我可以在这种情况下返回共享消息视图,但这只是一个代码示例来重现该问题。

CustomSignupService.Activate通过NHibernate进行数据库查找,并更新事务(用户激活)中的用户。 有时候(让我们说在5分钟内1/5次尝试)TempData不会让它通过重定向,所以我将记录添加到Session_End中,并注意到会话在RedirectToAction被调用时结束。之后,Session_Start被调用,但当然TempData已经消失。

会话的默认超时(20分钟)和控制器使用SessionStateBehavior.ReadOnly

任何想法?

UPDATE

第1步:这不是应用程序池回收(我打开的应用程序池的所有一般回收的事件日志条目,并检查事件日志,会议重新启动后,但回收时导致它)

+0

S同类话题;我的答案可能会有帮助: http://stackoverflow.com/a/23804262/3253726 – user3253726 2014-05-22 10:33:42

+0

我有这种完全相同的行为。你有没有找到根源? – 2016-05-16 15:52:08

+0

不,可悲的是我没有@jas – 2016-10-03 09:20:52

回答

1

我不知道ASP.NET MVC,但在黑暗的几个世纪中,我使用ASP.NET而不使用MVC。我以意想不到的会议结束挣扎了好几次。大多数情况下,它是由文章http://www.c-sharpcorner.com/uploadfile/technoNet/session-timeouts-causes-and-remedies/

中描述的一些简单的事情造成的。有时,服务器在事件日志中有条目,可以提供更多信息。

还有一些其他的解决方案可能是

ASP.NET Session ending abruptly

random IIS session timeout

3

我曾与会话丢失的问题。我使用了Fiddler,并注意到有一个重复的ASP.NET会话cookie和一个空白值。我不知道它是如何到达那里的。因此,每次请求都会创建一个新会话。我删除了重复的cookie,问题解决了。

其他不可能的原因是:

IIS进程回收

Session.abandon被称为

修改bin文件夹或web.config中导致应用程序重启

看看这个页面:

Losing Session State