2012-02-07 140 views
1

我们有一个使用FormsAuthentication的MVC Web应用程序,并且还在会话变量中存储了一些变量。最近在会话变量丢失的情况下,我们遇到了一些情况,但用户仍然登录。一个快速的Google让我看到一些SO文章提到在Proc Session State中经常丢失,如果我们要求它继续存在,我们应该考虑转向非In Proc解决方案。ASP.NET在Proc会话状态

来自经典的ASP背景,我们依赖会话状态进行会话的整个生命周期,似乎有点莫名其妙,我现在根本无法依赖它。毫无疑问,在Proc会话状态下,如果任何人都可以在帽子下丢失,那么这对任何人都没有价值吗?我错过了什么吗?

我意识到将它存储在SQL服务器中有好处,但对于流量小的小型web应用程序,In Proc是一个理想的解决方案,可以依赖它。

回答

1

ASP.NET会话状态能够在与ASP.NET主机进程不同的进程中运行。如果会话状态处于单独的进程中,则ASP.NET进程可以在会话状态进程保持可用时进出。当然,您仍然可以在类似于传统ASP的过程中使用会话状态。

您不必使用SQL服务器将会话数据存储在进程外,您可以使用进程外状态服务器,该进程状态服务器可以与Web服务器位于同一服务器的内存中。

你可以阅读更多关于如何在http://msdn.microsoft.com/en-us/library/ms972429.aspx

+0

优秀,只是我是什么后配置出过程会话状态。 – littlecharva 2012-02-08 12:04:25

+0

链接是否真的指向2000年12月28日写的页面?这里有另外一个指向更新的信息,tho仍frmw 3.0 ... http://msdn.microsoft.com/en-us/library/87069683%28v=vs.85%29.aspx – zukanta 2013-08-19 17:20:12

1

据我所知,在重新编译应用程序和回收应用程序池之后,in-proc会话状态会丢失。如果没有足够的内存或定期重新启动时间间隔,应用程序池可以被回收。