asp.net - 应用程序池回收如何影响ASP Net Session State?

标签 asp.net iis

我知道何时回收应用程序池时会启动一个新的工作进程,但是我对在此过程中如何处理过期和有效的 session 感到困惑?哪些传递给新的工作进程线程,哪些被消除?它会做什么:

  • 用户A的 session 已过期
  • 用户B的 session 有效

  • 回收后,当用户A和用户B请求时,他们的 session 状态是什么?

    最佳答案

    如果您只有一台Web服务器,并且已使用默认的InProc模式进行SessionState持久化,则在应用程序池回收期间,您在服务器代码中添加到 session 的Dictionary中的所有数据都会丢失-回收后,当您的代码下一次访问SessionState字典中的条目时,它将返回null

    如果您在负载平衡器上有多个Web服务器,并且 session 状态错误地配置为InProc,并且用户返回到其他服务器(即,没有粘性路由),则也会类似地发生。

    (存储在浏览器中的 session 状态cookie可能仍在几分钟内有效)。

    允许 session 状态“生存”一个应用程序池回收,服务器崩溃或跨服务器场的方法是持久存储存储在SessionState中的数据,以便该服务器(或多个服务器)可以在用户的​​状态下再次检索数据。 session 返回。最简单的方法是使用out of the box解决方案之一,即使用单独的StateServer进程,或将状态存储在SqlServer数据库中。自定义持久性也是一种选择。

    需要注意的是-请注意,以“进程外”模式存储的任何数据(例如StateServerSqlServer)都需要可序列化-当您退出InProc时,这可能是一项重大更改。

    关于asp.net - 应用程序池回收如何影响ASP Net Session State?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34544760/

    相关文章:

    iis - Azure 网站上的 ARR 反向代理删除了 WebSockets 响应 header 'Sec-WebSocket-Accept'

    c# - 如何验证表单以防止重复输入?

    asp.net - Jquery隐藏字段

    asp.net - 单元测试ASP.NET MVC重定向

    c# - IIS 回收时运行的任务会发生什么

    node.js - 通过 SSL 托管在 IIS 上的 NodeJS Express API 返回错误 : unable to verify the first certificate

    c# - 如何使用 Web API(cs 或 asp.net)调用 Powershell 脚本

    c# - 在线问卷/考试申请的设计帮助

    ASP.NET 4.0,IIS6 上的 PDF 浏览器二进制呈现

    iis - WAS 和 IIS 有什么区别?