【发布时间】:2015-12-22 12:29:41
【问题描述】:
我正在了解有关 WCF 服务上下文中的 FaultException 和 CLR 异常,但有些事情尚不清楚。 在“Learning WCF”一书中,它说当服务抛出一个正常的 CLR 异常时,它被服务模型捕获,服务模型从中构造一个 SOAP 消息,将其发送回客户端,然后在客户端抛出异常再次。那里的通道有故障。
所以我构建了一个抛出 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 时保持 Opened 状态?还是一直开着?
【问题讨论】:
标签: c# .net web-services wcf soap