ASP.Net MVC3 SessionState超时

时间:2012-12-20 19:01:26

标签: asp.net session-state session-timeout

我将它设置为120分钟,但它不会持续那么久。我不确定它到底有多长时间,但我知道它不是2小时。

<sessionState timeout="120" />

这只在默认的Web.config中设置,而不是在Views目录中的那个,也不是Web.Debug.config或Web.Release.config中。

默认会话超时是否为20分钟会产生影响吗?

2 个答案:

答案 0 :(得分:1)

为了保证您的会话不会因w3wp.exe崩溃或应用程序池回收而被杀死,您应该将会话状态移动到单独的存储中。最简单的是ASP.Net State Server服务。确保在主机上启动该服务并将其添加到您的web.config中:

<sessionState mode="StateServer"
    stateConnectionString="tcpip=SampleStateServer:42424"
    cookieless="false"
    timeout="120"/>

答案 1 :(得分:0)

我认为你应该定义会话状态模式

ASP.NET中存在不同的会话状态 http://msdn.microsoft.com/en-us/library/ms178586(v=VS.80).aspx

进程内模式 默认值为<sessionState mode="InProc" timeout="10" />,重建项目后会话将清除

状态服务器模式 我们可以使用它,但记得转动服务 - ASP.NET状态服务

<sessionState mode="StateServer"
  stateConnectionString="tcpip=localhost:42424"
  sqlConnectionString="data source=.\SQLEXPRESS; User ID=sa;Password=12345678; Integrated Security=SSPI"
  cookieless="false"
  timeout="2"
/>

SQL Server模式我们可以在创建DB ASPSate by命令之后使用它,请查看此站点了解详细信息 - http://www.brianstevenson.com/blog/aspstate-concurrently-running-for-net-1011-and-net-20

<sessionState mode="SQLServer"
  stateConnectionString="tcpip=localhost:63586"
  sqlConnectionString="data source=.\SQLEXPRESS; User ID=sa;Password=12345678; Integrated Security=SSPI"
  cookieless="false"
  timeout="2"
/>

状态服务器模式下的会话&amp;重建项目后不会清除SQL Server模式,它有利于开发