匯出 (0) 列印
全部展開

角色執行個體啟動期間發生 System.ServiceModel.CommunicationObjectFaultedException

更新日期: 2011年7月

適用於:Windows Azure SDK 1.3 和更新版本

徵兆:本主題將說明 System.ServiceModel.CommunicationObjectFaultedException 錯誤訊息的可能原因與解決方案。

當您在使用計算模擬器的本機開發環境中啟動角色時,可能會遇到「通訊物件 System.ServiceModel.Channels.ServiceChannel 處於 Faulted 狀態,因此無法用來通訊」這樣的錯誤訊息。

通訊物件錯誤例外狀況

原因 1:Web.config 檔案在計算模擬器中是標示為唯讀的。

在 SDK 1.3 版本中,如果 web.config 檔案是標示為唯讀的,這個對話方塊就會出現在 Windows Azure 計算模擬器中。但部署至雲端中的 Windows Azure 時卻不會發生此錯誤,因為在任何雲端部署中都會重設檔案屬性,因而讓 web.config 檔案成為可寫入的。請注意,計算模擬器在執行期間不會複製網站的內容。

解決方案:清除 web.config 檔案的唯讀屬性。如果您有使用原始檔控制系統,可能需要簽出檔案。

在 SDK 1.3 中爲了簡化 ASP.NET 的使用,Windows Azure 環境會使用網站的 web.config 檔案以每個網站為基礎自動設定 ASP.NET 電腦金鑰。此自動提供的電腦金鑰對於某特定網站的所有執行個體來說都是相同的,但對於所有其他狀況 (跨部署等等) 來說則不相同。

在先前的版本中,電腦金鑰是在電腦層級設定的。 

原因 2:計算模擬器中有多個角色執行個體寫入到相同的組態檔。

在 SDK 1.3 版本中,如果啟動某特定的 IIS 型 Web 角色的多個執行個體,就可能會發生這個錯誤。因為所有執行個體都是參考磁碟上的相同位置,所以它們會嘗試寫入相同的 Web 組態檔,而在角色啟動期間造成間歇性的當機。

解決方案:使用計算模擬器時,將任何特定角色的執行個體計數限制為一個。在部署至 Windows Azure 之前,再將執行個體計數重設為所需的較高值。

原因 3:專案的檔案數目非常多。

在 SDK 1.3 版本中,當檔案數目非常多的角色在啟動時,就可能會發生這個錯誤。當檔案數目在 2000 到 5000 時,您就可能會遇到這個錯誤。不太可能指出精確的檔案數目,因為此錯誤和時間有關係,並且在 VM 上執行的其他處理序也可能會影響效能。在啟動期間,專案中的所有檔案都必須套用正確的 ACL。這個處理序可能會花費相當長的時間,並且可能會在角色啟動期間造成間歇性的當機。

解決方案:限制專案中包含的檔案數目。

原因 4:Web.config 檔案中發生錯誤。

在 SDK 1.3 版本中,如果 web.config 檔案有組態錯誤,就可能會發生下面這些錯誤。這只是可能發生的錯誤的部分清單:

  • 無效的 XML 格式:缺少結束標記、引號不成對等等

  • 重複的 <configSections>

  • 重複的 machineKey 項目

  • machineKey 驗證設定為下面這幾個值以外的其他值:AES、SHA1、3DES 或 MD5

解決方案:更正 Web.config 檔案中的錯誤。

顯示:
© 2014 Microsoft