【问题标题】:Prevent session end when webroot changes当 webroot 更改时防止会话结束
【发布时间】:2011-05-19 01:51:44
【问题描述】:

我们的 Intranet 有一个自定义会员系统(不是 asp 会员),它在会话信息中放入值以识别用户。随着内网的不断发展,我经常需要每天多次向实时服务器发布更改。每次我这样做时,登录的用户会话都会结束,他们必须重新登录。这会导致各种问题,我不会在这里让任何人感到厌烦。

我的问题 - 有没有办法防止这种情况发生,还是我只能忍受它?过去 3 小时都在 Goggling 上,但找不到解决方案。

提前致谢。

【问题讨论】:

    标签: c# asp.net session session-state session-timeout


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      解决办法是使用不同的会话模式;您正在使用“InProc”,这意味着会话存储在与您的应用程序相同的应用程序空间中。您可以使用“StateServer”或“SQLServer”,但是这些可能需要更改应用程序(以及额外的设置;StateServer 需要在 IIS 服务器上运行单独的服务,而 SQLServer 需要在其中存储信息的数据库)。您存储在 Session 中的所有内容都需要可序列化。

      Here is the information on MSDN regarding Session Mode.

      【讨论】:

      • 谢谢!!这就说得通了。不敢相信 1:我自己也找不到 2:我写了“Goggling”。当人们这样做时,我讨厌它。
      【解决方案3】:

      如果您的问题是关于保持服务器 24x7 不间断运行而不会对用户造成任何干扰(会话丢失/系统停机等),那么它涉及以下步骤:

      1. 您应该配置应用程序以将会话存储在 DB 中
      2. 您需要设置多个应用服务器作为故障转移策略
      3. 要将请求动态路由到这些服务器之一,您需要一个负载平衡器
      4. 现在,当您想要将发布的下一个版本实时部署到应用程序时。服务器说 S1 和 S2,请按照以下步骤操作: [4.1.] 更改您的负载均衡器配置,使其不将请求路由到 S1。 [4.2.] 将应用部署到 S1 [4.3.] 更改您的负载均衡器配置,这次包括 S1 和排除 S2。 (因此,所有后续请求都应从连接 S1 和 S2 的公共 DB 中获取会话信息的 S1) [4.4.] 根据需要重复上述步骤。

      最重要的是,在您首先在现场/生产环境中进行测试之前,始终尝试在您的暂存环境中测试上述步骤。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-15
        • 2011-05-23
        • 2016-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        相关资源
        最近更新 更多