2013-01-06 69 views
1

我使用C#和Visual Studio 2012開發WP8應用程序。我添加了一個服務引用到我的項目(添加服務引用)。所以我能夠使用web服務功能。如何從CompletedEventArgs中獲取拋出異常的類型?

client = new YChatWebService.WebServiceControllerPortTypeClient(); 

client.getDataCompleted += client_getDataCompleted; 
client.InnerChannel.OperationTimeout = new TimeSpan(0, 0, 0, 0, 500); 
client.getDataAsync(); 

void client_getDataCompleted(object sender, getDataCompletedEventArgs e) 
{ 
    // e.Error.Message 

} 

我已經爲getData()設置了超時限制500ms;如果超過了時間限制,然後我收到以下錯誤:

"The HTTP request to 'http://example.com/webService/index?ws=1' has exceeded the allotted timeout. The time allotted to this operation may have been a portion of a longer timeout."

這是很好的:)不過,我想找出什麼樣的異常被拋出。像包含字符串「TimeoutException」的字符串變量就好。我怎樣才能達到目的?

+1

會「如果(e.Error是TimeoutException)」工作?我不確定e.Error是什麼類,任何文檔? – ZombieSpy

+0

謝謝@ZombieSpy。 「e.Error是TimeoutException」返回true。 – MPeli

+0

「e.Error.InnerException」或「e.Error.BaseException」是什麼? – codingbiz

回答

3

你可以使用

if(e.Error is TimeoutException) 

要看到,如果異常的類型是TimeoutException異常的

1

這不是更多的從服務器的HTTP響應包含錯誤的描述,而不是一個.NET異常?

e.Error類是否具有「消息」以外的任何其他屬性?如果服務器也是.net,那麼你可能能夠匹配異常類型,但如果它不是.net,它們將不會對應。

如果返回錯誤代碼,我只是使用它,或者只是搜索文本「超出分配的超時時間」,以確認它是超時異常。

相關問題