[英]Distinct TimeoutException from SoapException
讓我概述一下情況。 我有一個Windows服務(叫它A
) ,它calls
了一個Web服務(叫他B
) 。 B
自己 調用不同的Web服務。 (讓我們將這些Web服務稱為WS1
, WS2
, WS3
)
畫畫:
//This is a Black Box (e.g. I can't change implementation)
+-----------------------------------------------+
| |
| ----> WS1 |
WindowsService A ----> | Webservice B ----> WS2 |
| ----> WS3 |
| |
+-----------------------------------------------+
在通話過程中可能會不時發生異常情況。 大多數異常應停止程序的執行並通知開發人員(Me)。 但是,當發生Timeout
時,Window-Service A
應該嘗試retry
。
因此,我編寫了以下代碼:
try
{}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.Timeout)
{
//Wait some time before retry
//Log the exception
//Retry
}
else
{
//Log the exception
throw;
}
}
catch (Exception ex)
{
//Log the exception
throw;
}
如果Web服務B
發生異常,則此代碼可以很好地工作 。 但是,當WS1
, WS2
, WS3
發生timeout
時; 我收到了SoapException
。
題:
無論如何,如果SoapException
的原因是Timeout
而不使用此處提到的消息( MSDN- Handle TimeoutException ),是否可以過濾掉。 是否有任何字段可以指向基礎異常的類型?
試試下面的代碼,它可以幫助您了解錯誤的原因:
PS:在catch()
使用它
string pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd().ToString();
return pageContent;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.