【问题标题】:ASP.Net Session.Timeout - Is StateServer and Programmatic Session.Timeout Good Enough?ASP.Net Session.Timeout - StateServer 和 Programmatic Session.Timeout 是否足够好?
【发布时间】:2014-02-13 04:41:19
【问题描述】:

仔细阅读,看起来在使用 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.config @timeout 和应用程序池空闲设置设置在什么位置?我的两个动作会解决所有问题吗?

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

提前致谢。

【问题讨论】:

    标签: asp.net session-timeout stateserver


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢...您关于通过配置中的设置进行控制的声明...如果设置为 20,那么在 Session_Start 我以编程方式设置它,我的编程分配应该优先吗?
    • @Terry 我相信是这样,这个question 也证实了这一点。我建议最初使用小会话超时(如 2 分钟)进行测试以确保。
    猜你喜欢
    • 2019-08-13
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2012-04-26
    • 2011-05-25
    • 2015-11-06
    • 2013-11-11
    相关资源
    最近更新 更多