gpt4 book ai didi

c# - 通过 WCF 序列化异常

转载 作者:可可西里 更新时间:2023-11-01 08:22:18 25 4
gpt4 key购买 nike

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

客户:

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

服务器:

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

契约(Contract):

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

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

最佳答案

您需要捕获服务器上的异常并将它们打包成 SOAP 错误,以便通过网络将它们发回。否则,您的客户端-服务器 channel 将出现“故障”并且无法使用。

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

如果确实保证通信线路的两端都是 .NET,您可以轻松地将任何 .NET 异常包装到 FaultException<T> 中。从而使用符合 SOAP 标准的“传输工具”轻松回传 .NET 特定的异常信息。

在此处阅读有关 SOAP 错误以及如何将服务器上的 .NET 异常转换为网络上的 SOAP 错误的更多信息:

关于c# - 通过 WCF 序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com