我们有一个使用FormsAuthentication的MVC Web应用程序,并且还在Session变量中存储了几个变量。我们最近遇到了会话变量丢失的一些情况,但是用户仍然登录。快速谷歌引导我提到一些SO文章提到In Proc Session State经常丢失,如果我们要求它继续存在,我们应该考虑转向非In Proc解决方案。
来自经典的ASP背景,我们在会话的生命周期中依赖会话状态,看起来有点莫名其妙,我现在根本不能依赖它。当然,在Proc会议中,如果一个人丢掉帽子,那么对任何人都没有任何价值?我错过了什么吗?
我意识到将它存储在SQL服务器中有它的好处,但对于流量很小的小型Web应用程序,In Proc是一个理想的解决方案,可以依赖它。
答案 0 :(得分:1)
据我所知,在重新编译应用程序和回收应用程序池后,进程内会话状态丢失了。如果内存不足或者有定期重启时间间隔,则可以回收应用程序池。
答案 1 :(得分:1)
ASP.NET 会话状态能够在与ASP.NET主机进程不同的进程中运行。如果会话状态位于单独的进程中,则ASP.NET进程可以在会话状态进程保持可用时进出。当然,您仍然可以在类似于传统ASP的过程中使用会话状态。
您不必使用SQL服务器在进程外存储会话数据,您可以使用进程外状态服务器,该服务器可以在与Web服务器相同的服务器上的内存中。
您可以在http://msdn.microsoft.com/en-us/library/ms972429.aspx下了解有关如何配置进程外会话状态的更多信息