我有一個WCF服務客戶端對。我們一直依靠在客戶端的工廠方法上調用Open()來確保服務在我們撥打電話之前可用。喜歡的東西:在禁用安全性後,WCF客戶端的Open()方法不再引發異常。該怎麼辦?
MyClient GetClient()
{
MyClient client = new MyClient();
try
{
client.Open();
return client;
}
catch(Exception)
{
//perform an (important) error-handling here
}
}
通過這種方式,調用者代碼將只是這樣做:
client = factory.GetClient();
client.CallMethodInTheService();
,他們並不需要擔心錯誤處理。
這適用於我們將安全模式設置爲Windows並將clientCredentialType設置爲wshttpbinding中的Windows。 client.Open()會在服務不可用時拋出異常,所以錯誤處理代碼將被執行。但是,現在我們正在部署一個不能使用基於Windows憑據的安全性的環境,因此我們將安全模式設置爲無。但是,這會導致client.Open()在服務不可用時不再引發異常,並且由於我們在工廠的catch塊中依賴此代碼,所以存在一些問題。
當我們使用消息安全性時,Open()拋出異常但是當我們禁用安全性時拋出異常的原因是什麼? 如果安全性設置爲none,我們如何執行類似的可用性檢查?我不認爲這是一個很好的解決方案,在每個單獨的調用中進行錯誤處理。在返回客戶端對象之前,工廠方法是否有另一種方法檢查服務的可用性?
你的頭像讓我想downvote你。幸運的是,我抵制了誘惑。 – 2012-04-18 17:36:27
爲什麼?我希望它會誘惑人們upvote :) – 2012-04-18 17:37:58