ASP.Net Session.Timeout - StateServer和Programmatic Session.Timeout足够好吗?

时间:2014-02-13 04:41:20

标签: asp.net session-timeout stateserver

阅读时,看起来在使用InProc模型时更改asp.net会话时间需要两次更改......

  1. web.config - 应用程序池空闲
  2. 超时 - 似乎你应该设置这个> = Session.Timeout
  3. 我从阅读http://asp-net.vexedlogic.com/2012/05/23/aspasp-net-session-timeout-how-do-i-change-it/收集了这些内容。

    所以,如果我没有在应用程序池上更改超时,我想知道我是否更改为使用StateServer,然后按照上面的文章中的描述以编程方式设置Session.Timeout,我是否需要担心什么web.config @timeout和应用程序池空闲设置被设置为?我的两个动作会照顾好一切吗?

    如果它确实照顾它,我想下一个问题是,是否有人知道InProc与StateServer的性能比较。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

根据我的理解,如果从进程内切换到状态服务器,则空闲超时(在IIS中)设置不会对会话状态超时产生影响。

如果没有活动(如果通过了空闲超时),仍然会有应用程序池中终止的工作进程,但会话状态(即用户会话和应用程序会话值)将保持在此之外。您的会话超时应仅由配置中设置的超时值(来自here)控制,即

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

Inproc比StateServer更快,因为会话数据在存储时需要序列化/反序列化。它也可以存储在可能引入一些延迟的单独机器上。但是,当然还有State Server的优点,即应用程序重启(应用程序池回收)之间的会话状态持久性,可以在Web场中的多个服务器之间共享状态。

question还讨论了使用状态服务器模式的优缺点。