我們目前有一個約400人使用的生產應用程序。該應用程序使用WSHTTP與我們的WCF服務綁定。當我們在服務器端代碼上發佈版本時,我們通常會在很少有人進入的時候深夜進行。我的理解是,更新將導致IIS進行回收,並且它對最終用戶而言是無縫的。WCF更新服務
- 我的理解是否正確?
- 是否有任何理由我們無法在一天中更新我們的WCF服務?
- 您對當前連接的用戶有任何影響嗎?
我們目前有一個約400人使用的生產應用程序。該應用程序使用WSHTTP與我們的WCF服務綁定。當我們在服務器端代碼上發佈版本時,我們通常會在很少有人進入的時候深夜進行。我的理解是,更新將導致IIS進行回收,並且它對最終用戶而言是無縫的。WCF更新服務
的用戶會隻影響如果正在使用endponts是sessionful,即 一)在消息級別啓用WCF安全,(我的2美分 B)可靠的會話
這是因爲,當任何在ASP.NET監控的文件夾中進行了更改(有關監視哪些目錄的博客很好),應用程序池被卸載並重新加載。現在,WCF在內存中存儲令牌(使用消息安全性時)。如果應用程序域被卸載,則用於認證用戶的令牌將失效。所以,如果客戶端試圖繼續使用它,服務應用程序不會找到它並拋出。
解決方案,這可能是在安全會話中使用有狀態安全上下文令牌(SCT),會話可以承受被回收服務, http://msdn.microsoft.com/en-us/library/ms731814.aspx
PS:它總是建議停止IIS應用程序池在部署的時間以避免ASP.NET影子副本出現意外問題。
HTH, 阿米特
在回答你的問題
如果您有高可用性要求,理想情況下應該在請求修補主節點時將請求路由到故障轉移端點。或者你可以考慮使用隊列而不是同步呼叫,這樣可以讓你在工作時間進行更新。