我在 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")
}
现在我知道在这种情况下我可以只返回共享消息视图,但这只是重现问题的代码示例。
CustomSignupService.Activate通过 NHibernate 进行数据库查找并更新事务中的用户(用户激活)。有时(假设在 5 分钟内尝试 1/5 次)TempData 无法通过重定向,因此我添加了登录到 Session_End 并注意到在调用 RedirectToAction 时会话结束。在调用 Session_Start 之后,当然 TempData 已经消失了。
会话具有默认超时(20 分钟)并且控制器使用SessionStateBehavior.ReadOnly
有任何想法吗?
更新
第 1 步:这不是应用程序池回收(我打开了应用程序池上的所有常规回收事件日志条目并检查了事件日志,会话重新启动后但回收没有导致它)