【发布时间】:2012-03-16 17:32:39
【问题描述】:
我们目前有大约 400 人使用的生产应用程序。该应用程序使用 WSHTTP 绑定与我们的 WCF 服务。当我们发布服务器端代码时,我们通常在深夜很少有人在的时候发布。据我了解,更新将导致 IIS 回收,并且对最终用户来说是无缝的。
- 我的理解正确吗?
- 有什么原因我们不能在中午更新 WCF 服务吗?
- 您发现对当前连接的用户有什么影响吗?
【问题讨论】:
标签: wcf deployment
我们目前有大约 400 人使用的生产应用程序。该应用程序使用 WSHTTP 绑定与我们的 WCF 服务。当我们发布服务器端代码时,我们通常在深夜很少有人在的时候发布。据我了解,更新将导致 IIS 回收,并且对最终用户来说是无缝的。
【问题讨论】:
标签: wcf deployment
只有在使用的端点是会话的时,用户才会受到影响,即 a) 在消息级别启用 WCF 安全性,(我的 2 美分 b) 可靠的会话
这是因为,只要在 ASP.NET 监视的文件夹中进行任何更改(有关于监视哪些目录的好博客),应用程序池就会被卸载并重新加载。现在,WCF 将令牌(在使用消息安全性时)存储在内存中。如果卸载应用程序域,则用于验证用户的令牌无效。因此,如果客户端尝试继续使用它,服务应用程序找不到它并抛出。
对此的解决方案可能是在安全会话中使用有状态安全上下文令牌 (SCT),该会话可以承受服务被回收, http://msdn.microsoft.com/en-us/library/ms731814.aspx
P.S.:始终建议在部署时停止 IIS 应用程序池,以避免 ASP.NET 卷影复制出现意外问题。
HTH, 阿米特
【讨论】:
回答你的问题
如果您有高可用性要求,理想情况下,您应该在修补主要端点时将请求路由到故障转移端点。或者您可以考虑使用队列而不是同步调用,这样您就可以在工作时间进行更新。
【讨论】: