簡體   English   中英

與SoapException不同的TimeoutException

[英]Distinct TimeoutException from SoapException

讓我概述一下情況。 我有一個Windows服務(叫它A ,它calls了一個Web服務(叫他B B 自己 調用不同的Web服務。 (讓我們將這些Web服務稱為WS1WS2WS3

畫畫:

                       //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發生異常,此代碼可以很好地工作 但是,當WS1WS2WS3發生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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM