ASP MVC - 随机会话超时

时间:2013-03-17 17:06:15

标签: asp.net-mvc asp.net-mvc-3

我有这个:

<membership defaultProvider="DefaultMembershipProvider" userIsOnlineTimeWindow="15">

和此:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" cookieless="UseCookies" regenerateExpiredSessionId="true" timeout="15">

我的会话在随机时间超时,我可以逐页查看,然后退出,可能导致什么?

1 个答案:

答案 0 :(得分:1)

您应该区分ASP.NET Session:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" cookieless="UseCookies" regenerateExpiredSessionId="true" timeout="15">

和表单身份验证:

<authentication mode="Forms">
    <forms loginUrl="~/account/login" timeout="2800" />
</authentication>

默认情况下,ASP.NET会话存储在Web服务器的内存中。这样做的问题是您的应用程序可以随时被Web服务器回收或关闭,并且会话将丢失。例如,如果您的服务器达到某些CPU或内存阈值并且几乎无法控制,则可能会发生这种情况。如果要想以可靠的方式将某些内容存储到ASP.NET会话中,则应确保使用进程外状态(例如StateServerSqlServer)。这是一篇关于various session state modes

的文章

另一方面,表单身份验证用于使用Cookie跟踪经过身份验证的用户。它们不会持久存储在服务器上,也不会受到与ASP.NET会话相同的限制。如果您决定在应用程序中使用ASP.NET会话,则应确保其超时与表单身份验证cookie的超时相同,并且您使用的是超出proc持久性状态。