[英]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.