WCF - “用户代码未处理CommunicationException”

时间:2009-08-16 19:52:28

标签: .net wcf exception

使用WCF的系统中的CommunicationExceptions有什么处理?我有一个客户端使用SOAP通过WCF与服务器通信 - 所有异步通信。偶尔我会在我的脸上抛出一个CommunicationException - 没有看到任何可重现的模式,说明为什么以及何时发生这种情况。

然而;我能够继续运行程序,因为这只是第一次机会(?)异常。因此,我假设我不必担心这一点,并且它是在幕后处理的?但是我仍然担心,如果有人可以在这方面给我启发,那就太好了。我应该在每个通过WCF调用函数的地方尝试捕获CommunicationException吗?

2 个答案:

答案 0 :(得分:2)

CommunicationException是所有WCF相关问题的基本类型,并且可以在多种情况下出现在客户端:

  • 当您的客户例如请求一个不可用的网址
  • 当您的服务器太忙而无法处理更多请求并拒绝请求时
  • 当客户端和服务器之间的网络出现问题时(连接丢失等)

如果您经常弹出这些内容,则需要更密切地检查它们是否真的CommunicationException或某些派生类型(FaultException还有更多)。

FaultException表示服务器上的某些内容出错 - 如果服务器收到请求,它将被抛出,但无法正确处理并返回异常或SOAP错误。

您是否注意到该异常的消息是什么,以及是否有InnerException

马克

答案 1 :(得分:0)

您可以尝试这样的事情:

try
{
    ...
    client.Close();
}
catch (CommunicationException e)
{
    ...
    client.Abort();
}
catch (TimeoutException e)
{
    ...
    client.Abort();
}
catch (Exception e)
{
    ...
    client.Abort();
    throw;
}