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

通过WCF序列化异常

  •  12
  • MGSoto  · 技术社区  · 16 年前

    我有一个任务在远程系统上运行,该系统使用WCF连接回服务器。任务很可能会抛出异常,我希望这些异常被引导回服务器。基本上我想做这样的事情:

    客户:

    server.SendException(new UnauthorizedAccessException("Some Exception"));
    

    public void SendException(Exception e)
    {
        throw e;
    }
    

    合同:

    [ServiceContract]
    public interface IServerContract
    {
        [OperationContract]
        void SendException(Exception e);
    }
    

    我已经读了一些关于故障异常的内容,但据我所知,它们用于在一个名为over WCF的方法中运行的特定异常。我想要的是发送应用程序在WCF上下文之外抛出的任何类型的异常,然后将它们传回服务器进行进一步处理。如果它在解决方案中有所帮助,那么服务器还可以连接回客户端。

    2 回复  |  直到 16 年前
        1
  •  10
  •   marc_s MisterSmith    16 年前

    您需要捕获服务器上的异常,并将它们打包成SOAP故障,以便通过网络将它们发送回来。否则,您的客户机-服务器通道将“出现故障”且不可用。

    SOAP错误基本上是可互操作的SOAP,相当于.NET异常。您不应该抛出.NET异常,因为它们是特定于.NET的—WCF和SOA根据定义是系统不可知的。

    FaultException<T> 因此,可以使用符合SOAP的“传输工具”轻松地传回.NET特定的异常信息。

    阅读更多有关SOAP故障的信息,以及如何将服务器上的.NET异常转换为连接上的SOAP故障:

        2
  •  6
  •   MGSoto    16 年前

    为了我所需要的,我解决了我自己的问题。我使用ServiceModel提供的ExceptionDetail类,并使用该类将相关异常数据发送回服务器。