1

环顾四周,看起来在使用 InProc 模型时更改 asp.net 会话时间需要两个更改...

  1. web.config - 应用程序池空闲
  2. 超时 - 似乎你应该设置这个 >= Session.Timeout

我是通过阅读http://asp-net.vexedlogic.com/2012/05/23/aspasp-net-session-timeout-how-do-i-change-it/收集到的。

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

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

提前致谢。

4

1 回答 1

2

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

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

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

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

这个问题还讨论了使用状态服务器模式的利弊。

于 2014-02-13T09:27:33.617 回答