【问题标题】:WCF Updating ServicesWCF 更新服务
【发布时间】:2012-03-16 17:32:39
【问题描述】:

我们目前有大约 400 人使用的生产应用程序。该应用程序使用 WSHTTP 绑定与我们的 WCF 服务。当我们发布服务器端代码时,我们通常在深夜很少有人在的时候发布。据我了解,更新将导致 IIS 回收,并且对最终用户来说是无缝的。

  1. 我的理解正确吗?
  2. 有什么原因我们不能在中午更新 WCF 服务吗?
  3. 您发现对当前连接的用户有什么影响吗?

【问题讨论】:

    标签: wcf deployment


    【解决方案1】:

    只有在使用的端点是会话的时,用户才会受到影响,即 a) 在消息级别启用 WCF 安全性,(我的 2 美分 b) 可靠的会话

    这是因为,只要在 ASP.NET 监视的文件夹中进行任何更改(有关于监视哪些目录的好博客),应用程序池就会被卸载并重新加载。现在,WCF 将令牌(在使用消息安全性时)存储在内存中。如果卸载应用程序域,则用于验证用户的令牌无效。因此,如果客户端尝试继续使用它,服务应用程序找不到它并抛出。

    对此的解决方案可能是在安全会话中使用有状态安全上下文令牌 (SCT),该会话可以承受服务被回收, http://msdn.microsoft.com/en-us/library/ms731814.aspx

    P.S.:始终建议在部署时停止 IIS 应用程序池,以避免 ASP.NET 卷影复制出现意外问题。

    HTH, 阿米特

    【讨论】:

      【解决方案2】:

      回答你的问题

      1. 我不同意回收主机过程对用户来说是无缝的。正在处理的所有请求都将被卸载,消费者将收到基于可用性的异常
      2. 是的,原因同 1。
      3. 是的,他们的请求失败了,他们最多只能收到一个必须处理的肥皂故障。

      如果您有高可用性要求,理想情况下,您应该在修补主要端点时将请求路由到故障转移端点。或者您可以考虑使用队列而不是同步调用,这样您就可以在工作时间进行更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多