【问题标题】:ASP.NET Session ending abruptlyASP.NET 会话突然结束
【发布时间】:2011-07-14 15:03:58
【问题描述】:

我的应用程序会话突然结束,并且在 Global.asax 的 Application_Error 中看不到任何错误。此外,会触发 Session_Start 事件,但不会触发 Session_End。它发生在我将应用程序托管在服务器上之后,并且不会发生在我的开发机器上。

生成此自动退出的步骤是在加载和显示对象列表(客户端、经理等)的页面之间切换。大约 30-40 秒的活动后,用户退出并显示登录屏幕。有什么想法在幕后可能出了什么问题?

Web.Config 具有以下会话和身份验证设置:

<sessionState timeout="60" mode="InProc" cookieless="false"/>

认证:

<forms name="XXX.AUTH" loginUrl="~/login.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/default.aspx" enableCrossAppRedirects="false"/></authentication>

【问题讨论】:

    标签: asp.net session session-timeout


    【解决方案1】:

    您是否在共享托管环境中托管(即来自 GoDaddy 等托管服务提供商)?他们可能每分钟左右都在回收 IIS 工作进程,在这种情况下,您会丢失会话信息。您必须使用某种类型的进程外会话状态,例如状态服务器或 Sql 状态服务器来避免这种情况。

    这是关于它的MSDN 文章。

    【讨论】:

    • 你的意思是 mode="stateServer"?是的,它是一个共享的托管环境。如果我使用 stateServer,我需要指定 server:port 设置,我可以从哪里获得这些设置?那我还需要配置 IIS/Server 吗?
    • 是的,您可以使用 mode="stateServer" 或 mode="SQLServer"。你的主人是谁?我相当有信心 GoDaddy 不支持这个,因为我遇到了它earlier
    • 它是一个客户的站点(我只有 FTP 访问它),我不确定提供程序,但是通过 whois 搜索“ns1.microsoft2008hosting.com”出现并且“microsoft2008hosting.com”是不活动。
    • 尝试使用以下 web.config 设置来快速测试: 查看是否超时这个(暂时)
    • 试过了。同样的问题,已注销。
    【解决方案2】:

    您是否检查过该网站的应用程序池是否正在回收?如果发生这种情况,应用程序将在其轨道上停止。此外,许多应用程序在应用程序池中运行,有可能另一个应用程序正在使池崩溃并导致您的应用程序崩溃。

    【讨论】:

    • 如何检查?我可以通过 FTP 访问该站点,也许我需要访问管理控制台?
    • 你可以 RDP 进入服务器吗?如果是这样,那么您可以检查它...在共享主机中,您实际上没有办法在不联系支持人员的情况下检查它
    • 不,我不能 RDP——它的共享主机。
    • 不太可能发生了他们不知道的崩溃。是否可以在它的地方抛出一个简单的检查?或将您的应用程序推送到不同的托管帐户?您的本地开发人员永远不会与服务器相同。
    • 我会尝试从客户那里获得更多关于网络主机的信息,如果我可以访问管理面板。
    【解决方案3】:

    您错过了更改 IIS 池属性中的会话到期值。

    【讨论】:

      【解决方案4】:

      您是否尝试过在 web.config 中指定 machineKey?

      <machineKey 
      validationKey="random_validation_key" 
      decryptionKey="random_decryption_key" 
      validation="SHA1" decryption="AES" />
      

      您可以在此处生成这些密钥:http://aspnetresources.com/tools/machineKey

      此外,如果您在应用程序中更改超过 15 个文件(aspx 文件等),它将自动触发代码的重新编译,您可能会因此丢失会话,更多信息请点击此处:http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx

      【讨论】:

        【解决方案5】:

        Session 只是一个 cookie,每个 cookie 都有一个时间。也许您没有正确指定时间。检查您的 web.config 文件。

        【讨论】:

        • 将会话设置添加到原始帖子。
        • Session 不仅仅是一个 cookie。在 Web 浏览器的上下文中,确定它只是一个 cookie,但 cookie 的超时时间绝对不能 100% 反映会话管理服务中关联会话的超时时间。例如,某些会话 cookie 可能会在浏览会话结束时过期,或者永远不会过期,而会话本身可能会在 15 分钟不活动后终止。
        猜你喜欢
        • 1970-01-01
        • 2021-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-12
        • 2020-06-19
        相关资源
        最近更新 更多