【问题标题】:Distinct TimeoutException from SoapException与 SoapException 不同的 TimeoutException
【发布时间】:2014-10-15 07:25:26
【问题描述】:

让我概述一下情况。我有一个 Windows 服务(让我们将其命名为 A,其中 calls 是一个 Web 服务(让他命名为 BB 调用 不同的Web 服务本身。 (让我们将这些 Web 服务称为 WS1,WS2,WS3

绘图:

                       //This is a Black Box (e.g. I can't change implementation)
                       +-----------------------------------------------+
                       |                                               |
                       |                  ----> WS1                    |
WindowsService A ----> |   Webservice B   ----> WS2                    |
                       |                  ----> WS3                    |
                       |                                               |
                       +-----------------------------------------------+

在通话期间可能会不时发生异常。 大多数异常应该停止执行程序并通知开发者(我)。但是当 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-Service B 中发生异常,则此代码将非常有效。然而,当timeout 出现在WS1,WS2,WS3;我收到了SoapException

问题:
如果SoapException 的原因是Timeout 而不使用此处提到的消息(MSDN- Handle TimeoutException),是否仍然可以过滤掉。是否有任何字段可以指向底层异常的类型?

【问题讨论】:

    标签: c# web-services soapexception


    【解决方案1】:

    试试这个代码,它可能会帮助你了解错误的原因:
    PS:在catch()内使用

    string pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd().ToString();
    return pageContent;
    

    【讨论】:

    • 问题是,SoapException 不继承自 WebException。所以我不能使用Response-PropertyWebexception-part 工作出色。困扰我的是 SoapExceptions。
    • 相信我,前段时间我也遇到过同样的问题,但是允许 SOAP 将其异常抛出到 WebException 部分有助于至少清除发生错误的部分。在我的情况下,我没有给出正确的标题格式,这是 - 标题格式是:text/xml;字符集=\“utf-8\”; action=\"headtrip\";"
    • 标题格式为:text/xml;字符集=\“utf-8\”; action=\"headtrip\";
    • 据我所知,没有办法将SoapException 转换为Webexception。而且我也无法更改服务引发的异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2018-05-08
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多