代码之家  ›  专栏  ›  技术社区  ›  stiank81

wcf-“用户代码未处理通信异常”

  •  1
  • stiank81  · 技术社区  · 15 年前

    在使用WCF的系统中,如何处理通信异常?我有一个客户机使用SOAP-all异步通信通过WCF与服务器通信。偶尔我会遇到一个沟通异常——没有看到任何重复的模式来解释为什么会发生这种情况,什么时候会发生这种情况。

    但是,我可以继续运行程序,因为这只是第一次机会(?)例外。所以我想我不必担心这个,它是在幕后处理的?但我还是很担心,如果有人能告诉我这件事,那就太好了。我应该在通过wcf调用函数的每个地方都尝试catch通信异常吗?

    2 回复  |  直到 13 年前
        1
  •  2
  •   marc_s    15 年前

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

    • 当你的客户请求一个不可用的URL时
    • 当服务器太忙,无法处理更多请求并拒绝请求时
    • 当客户端和服务器之间的网络出现问题时(连接中断等)

    如果你经常弹出这些窗口,你需要仔细检查一下,如果它们真的是 通信异常 或某种派生类型( FaultException 还有更多)。

    故障异常 这意味着服务器上的某些东西出错了——如果服务器收到请求,但无法正确处理请求并返回异常或SOAP错误,则会抛出该请求。

    你注意到例外的信息是什么吗?是否有 InnerException ?

    马克

        2
  •  0
  •   Shiraz Bhaiji    15 年前

    你可以尝试这样的方法:

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