【问题标题】:Logout on recycle注销时回收
【发布时间】:2012-04-22 13:17:41
【问题描述】:

在生产环境中,我有一个 IIS 托管的 asp.net 应用程序,实际上是许多 Web 应用程序。每个应用程序都会消耗大量内存,但目前限制它的唯一方法是回收(nHibernate 似乎正在泄漏内存,并且它正在创建大量的字符串集合)。问题是在回收之后它会不断注销用户还是放弃会话?在本地计算机上,我无法重现该问题。我试过使用状态服务器,但没有成功,问题还在继续,SQL 状态保存会改变什么,还是我只是错过了铅或错过了什么?

【问题讨论】:

  • 我们在大型应用程序中遇到了这个问题。回收工作进程确实会导致附加会话失去其身份验证,我们正在使用状态服务器和负载平衡的粘性会话。我们确信,使用 IE6 和 32 位 IIS6 可以解决问题,更改任何一个都会改善问题。看到您在使用 IIS7 时遇到同样的问题令人失望,我得出的结论是 SQLServer 会话数据库可能是解决它的唯一方法。但是:您使用的是 32 位还是 64 位服务器?
  • 非常有趣的安德鲁!我在 64 位上运行它,并且在某个时候,我尝试了 Microsoft MVP 之一的建议,以强制工作进程在 32 位上运行,但结果虽然起初很有希望,但最终却是灾难性的。进程崩溃随机丢失所有数据并混淆了我们的数据库(实际上是崩溃导致的ORM故障)

标签: asp.net .net iis-7


【解决方案1】:

当应用程序池被回收时,如果会话数据存储在内存中(InProc,默认),所有会话都将丢失。

通过在用户浏览器中放置一个带有密钥的 cookie 并将该密钥保存在服务器状态机上来创建会话。

如果您使用 SQL Server 存储会话,您将避免服务器丢失会话信息。 Session-State modes on MSDN.

【讨论】:

    【解决方案2】:

    答案令人惊讶,它与我在应用程序中登录的视图状态错误有关,我在MSDN sites 之一上找到了正确的解释,尤其是这一行:

    关于 machineKey

    “[...]当应用程序池在用户帐户下运行时,不会生成上述密钥,从而导致间歇性无效视图状态错误。”

    总之,所有必须做的就是generating a machine key,并且回收不会导致用户重新进行身份验证。

    【讨论】:

      【解决方案3】:

      你写你尝试过StateServer模式,但是stateserver模式就像sqlserver一样工作如果我不知道它错了。 StateServer 可以从 Windows 服务启动,并且在您的 web.config 中您可以设置您的服务器 IP 地址(哪个状态服务器已启动并正在工作)。

      如果 stateserver 对你不起作用,我怀疑 sql server 会。问题可能出在我认为的另一个方面。

      ASP.NET 会话状态支持几种不同的存储选项 会话数据。每个选项都由 SessionStateMode 枚举。以下列表描述了 可用的会话状态模式:

      InProc 模式,将会话状态存储在 Web 服务器的内存中。 这是默认设置。

      StateServer 模式,将会话状态存储在单独的进程中 称为 ASP.NET 状态服务。这可确保 会话状态为 如果 Web 应用程序重新启动,则会保留,并且还会进行会话 Web 场中的多个 Web 服务器可用的状态。

      SQLServer 模式将会话状态存储在 SQL Server 数据库中。这 确保在 Web 应用程序运行时保留 会话状态 重新启动,并且还使会话状态可用于多个 Web Web 场中的服务器。

      自定义模式,可让您指定自定义存储提供程序。

      关闭模式,禁用会话状态。

      您可以指定希望 ASP.NET 会话状态使用的模式 将 SessionStateMode 枚举值分配给 mode 属性 应用程序的 Web.config 文件中的 sessionState 元素。 InProc 和 Off 以外的模式需要额外的参数,例如 连接字符串值,如本主题后面所述。你可以 通过访问的值查看当前选择的会话状态 HttpSessionState.Mode 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 2011-05-24
        • 2016-07-21
        相关资源
        最近更新 更多