gpt4 book ai didi

c# - 通过 NamedPipe 传递异常和子类

转载 作者:行者123 更新时间:2023-11-30 22:15:07 24 4
gpt4 key购买 nike

我正在尝试通过 NamedPipe 传递异常类型(或其子类之一)的对象。

服务合约:

[ServiceContract]
public interface IWCFCallback
{
[OperationContract]
void sendException(Exception e);
}

当我这样使用它时它工作正常:

_pipeproxy.sendException(new Exception("bla bla 99"));

但是一旦我传递了一个子类:

_pipeproxy.sendException(new ArgumentException("fridgemaster 3000"));

我得到一个异常,说反序列化失败。

我已经阅读了 KnownTypes 属性,但我不知道如何将它用于非我自己实现的类。

有人可以给我提示吗?

最佳答案

WCF 的“最佳实践”之一是不要序列化异常。
如果您的 ServiceHost 抛出异常,那么您应该使用 FaultException。
异常传输不安全的原因之一是异常本身是可序列化的,但您可以从中派生,并且谁保证您的自定义派生异常将是可序列化的。

作为变通方法,您可以将异常堆栈的数据协定对象作为字符串传递,将类型作为枚举传递。

关于c# - 通过 NamedPipe 传递异常和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143053/

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