2012-03-16 126 views
1

我們目前有一個約400人使用的生產應用程序。該應用程序使用WSHTTP與我們的WCF服務綁定。當我們在服務器端代碼上發佈版本時,我們通常會在很少有人進入的時候深夜進行。我的理解是,更新將導致IIS進行回收,並且它對最終用戶而言是無縫的。WCF更新服務

  1. 我的理解是否正確?
  2. 是否有任何理由我們無法在一天中更新我們的WCF服務?
  3. 您對當前連接的用戶有任何影響嗎?

回答

1

的用戶會隻影響如果正在使用endponts是sessionful,即 一)在消息級別啓用WCF安全,(我的2美分 B)可靠的會話

這是因爲,當任何在ASP.NET監控的文件夾中進行了更改(有關監視哪些目錄的博客很好),應用程序池被卸載並重新加載。現在,WCF在內存中存儲令牌(使用消息安全性時)。如果應用程序域被卸載,則用於認證用戶的令牌將失效。所以,如果客戶端試圖繼續使用它,服務應用程序不會找到它並拋出。

解決方案,這可能是在安全會話中使用有狀態安全上下文令牌(SCT),會話可以承受被回收服務, http://msdn.microsoft.com/en-us/library/ms731814.aspx

PS:它總是建議停止IIS應用程序池在部署的時間以避免ASP.NET影子副本出現意外問題。

HTH, 阿米特

1

在回答你的問題

  1. 我不同意回收宿主進程將是無縫的用戶。正在處理將被卸載的任何請求和消費者將接收基於可用性例外
  2. 是,同樣的原因1.
  3. 是的,他們的請求失敗,他們收到最好,他們必須再處理SOAP錯誤。

如果您有高可用性要求,理想情況下應該在請求修補主節點時將請求路由到故障轉移端點。或者你可以考慮使用隊列而不是同步呼叫,這樣可以讓你在工作時間進行更新。