gpt4 book ai didi

c# - FaultException 与 WCF 中的异常

转载 作者:行者123 更新时间:2023-11-30 21:52:51 24 4
gpt4 key购买 nike

我正在了解 WCF 服务上下文中的 FaultException 和 CLR 异常,但有些内容尚不清楚。在“Learning WCF”一书中,它说当服务抛出一个正常的 CLR 异常时,它会被服务模型捕获,服务模型从中构造一个 SOAP 消息,将其发送回客户端,然后在客户端抛出异常再次。 channel 出现故障。

所以我构建了一个抛出 NullReferenceException 的服务。客户端调用该服务,捕获异常并打印 CommunicationState。

try
{
x = Proxy.Call(); // throws NullReferenceException at the service
}
catch (Exception ex) // or CommunicationException is the same
{
MessageBox.Show("" + Proxy.InnerChannel.State);
}

但是状态成员保持打开状态,我可以永远调用该服务....

这里正确的是什么?客户端是否应该在服务抛出 CLR 异常时进入故障状态并在服务抛出 FaultException 时保持打开状态?还是一直开着?

最佳答案

我找不到官方确认,但这是我认为发生的事情:

您使用的 BasicHttpBinding 不会保持连接打开,但会在每次请求时创建一个新连接。如果切换到 NetTcpBinding,您将看到预期的行为(刚刚在本地测试过)

关于c# - FaultException 与 WCF 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34415967/

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