MVC3站点丢失会话中存储的值

时间:2012-05-23 22:54:39

标签: c# asp.net asp.net-mvc-3 session

所以,今天早上我们失去了托管我们MVC3网站的服务器的权力。由于它已经重新上线,我们会随机丢失会话值。这仅发生在此服务器上,而不是本地服务器或临时服务器上。这与超时无关,因为会话在短短5分钟后就会清除。会话将在12小时后过期。当值丢失时,会话的SessionID不会改变。

我正在使用Log4Net并添加了大量日志记录以尝试查明此问题。我已将Session_Start和Session_End事件添加到Global.asax,并检查整个控制器中的会话值。

我有一个显示项目列表的索引视图。列表中的每个项目都有一个链接,可以将您带到“详细信息”视图。我检查每个Action调用的会话值。从“详细信息”视图回调“索引”视图时,会话值似乎总是丢失。我注意到的是,每次我的会话值丢失时,都会触发一个Session_Start事件。

没有Session_End事件,只有Start。什么会导致这个开始发生?

如果我能提供更多信息,请发表评论,我会尽我所能。

2 个答案:

答案 0 :(得分:3)

如果您使用InProc SessionState,那么您的应用程序池可能会在某些会话中间进行回收。要解决使用 SQLServer SessionStateMode, StateServer SessionStateMode或 缓解 应用程序池回收。

http://msdn.microsoft.com/en-us/library/ms178586.aspx


  

SQLServer模式将会话状态存储在SQL Server数据库中。这个   确保在Web应用程序中保留会话状态   重新启动并使会话状态可用于多个Web   Web场中的服务器。

答案 1 :(得分:0)

这最终成为硬件问题。此Web服务器是虚拟机。看起来我们已经影响了所有虚拟服务器的停电,导致了很多i / o问题以及内存问题。我确实缩小了我的应用程序中丢失状态的区域,但它根本不一致。

由于他们重新启动了虚拟服务器主机,我们不再遇到问题了。

相关问题