我正在学习 WCF 并尝试从书中学到的不同示例。
我有一个简单的服务设置如下:
[ServiceContract]
interface MyService
{
[OperationContract(IsOneWay = true)]
void Throws();
}
我的客户端代码使用 ChannelFactory 类来创建代理:
var baseTcpAddress = new Uri("net.tcp://localhost/hello");
var tcpBinding = new NetTcpBinding();
// Create client channel.
ChannelFactory<ITestService> factory = new ChannelFactory<ITestService>(tcpBinding, new EndpointAddress(baseTcpAddress));
var channel = factory.CreateChannel();
var commObject = channel as ICommunicationObject;
commObject.Faulted += commObject_Faulted;
commObject.Closed += commObject_Closed;
调用此方法时,它会引发未处理的异常(不是从 FaultException 派生的),并且使用相同代理的后续调用会引发异常并且通道出现故障。
问题是我在代理通道的故障事件中注册,但我没有收到任何通知,只有在尝试访问代理时。
我的问题是——客户端如何保护自己免受故障代理的影响?代理不应该通知客户端它不可用,而不是让客户端尝试使用它吗?