在我的Silverlight應用程序中,我使用Visual Studio生成的客戶端(添加服務引用...)異步調用Web服務。
我的代碼如下所示:Silverlight和WCF:處理'WCF down'異常/ WCF連接檢查
ServiceClient serviceClient = new ServiceClient();
serviceClient.GetServerTimeCompleted += new EventHandler<GetServerTimeCompletedEventArgs>(serviceClient_GetServerTimeCompleted);
serviceClient.GetServerTimeAsync();
void serviceClient_GetServerTimeCompleted(object sender, GetServerTimeCompletedEventArgs e)
{
// do nothing atm
}
一切工作正常,只要該服務啓動並運行,但是當服務沒有運行,我得到:
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
「在 操作期間發生異常,導致結果無效。 檢查InnerException以獲取異常 的詳細信息。「
的InnerException
「發生錯誤,而試圖 做出請求URI 的‘http://’,這可能是 由於試圖在一個交叉訪問服務 沒有適當的 跨域策略或者 策略不適用於SOAP 服務您可能需要聯繫 服務的所有者以發佈 跨域策略文件,它允許發送與SOAP相關的HTTP標頭 。通過使用Web 服務代理中的內部類型,而不使用 InternalsVisibleToAttribute屬性,也可能導致此錯誤 。 請參閱內部異常 更多的細節。」
這是有道理的,我在這種情況下得到一個例外,但我無法弄清楚是怎麼趕上我的客戶端代碼中的異常。是有一個標準的方法來做到這一點?如果我理解這是如何工作的,當我的代碼調用生成的代碼時,它會產生另一個線程,它實際調用Web服務並等待響應。該線程和生成的異常代碼我的呼叫代碼(見上)或我的回撥方式都沒有機會看到異常情況
謝謝
Christian
感謝,我將深入探討這些網頁,但我不想改變我交談的WCF的方式。使用添加服務引用非常「方便」,我沒有時間atm .. – 2010-03-09 05:07:30