会话在重定向后随机结束

时间:2013-04-28 07:16:29

标签: c# .net session asp.net-mvc-4 redirecttoaction

我在ASP .NET MVC 4中遇到一个奇怪的问题。在 AccountController 中,我正在对某些操作进行重定向,并在此之前将数据放入TempData(存储在Session中):

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

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

CustomSignupService.Activate 通过NHibernate进行数据库查找,并在事务中更新用户(用户激活)。 有时(假设在5分钟内完成1/5尝试)TempData没有通过重定向,所以我添加了登录到Session_End并注意到会话在RedirectToAction被调用时结束。在调用Session_Start之后,当然TempData已经消失了。

会话具有默认超时(20分钟),控制器使用 SessionStateBehavior.ReadOnly

有什么想法吗?

更新

步骤1:不是应用程序池回收(我打开了应用程序池上的所有常规回收事件日志条目,并在会话重新启动后检查了事件日志,但是回收没有导致它)

2 个答案:

答案 0 :(得分:3)

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

其他不太可能的原因是:

IIS进程回收

调用Session.abandon

修改bin文件夹或web.config导致app restart

查看此页面:

Losing Session State

答案 1 :(得分:1)

我不知道ASP.NET MVC,但在黑暗的世纪里我使用没有MVC的ASP.NET。我在意外的会话结束时多次挣扎。大多数情况下,它是由文章http://www.c-sharpcorner.com/uploadfile/technoNet/session-timeouts-causes-and-remedies/

中描述的一些简单事物引起的

有时,服务器在事件日志中有条目,可以为您提供更多信息。

其他一些解决方案可能

ASP.NET Session ending abruptly

random IIS session timeout