阅读时,看起来在使用InProc模型时更改asp.net会话时间需要两次更改......
我从阅读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的性能比较。
提前致谢。
答案 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还讨论了使用状态服务器模式的优缺点。