繁体   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