如何在调用WCF服务之前测试代理的状态。
我有一个使用双工通道工厂创建的双工通道。
在对服务器进行任何调用之前,我想检查从通道工厂创建的代理对象的状态。
我在一本书中看到了这一点......(将在即时窗口中使用)
? ((ICommunicationObject)flsProxy).State
但它给了这个例外......
无法在类型为“System.ServiceModel.ICommunicationObject”的实例上获取字段或调用方法,因为它是a的代理 远程对象。
抓住异常会更好吗?
答案 0 :(得分:1)
如果使用DuplexChannelFactory<T>
创建客户端代理,则应该返回常规的旧WCF频道:
Callbacks myCallbacks = new Callbacks();
DuplexChannelFactory<IMyService> factory =
new DuplexChannelFactory<IMyService>(myCallbacks,
new NetTcpBinding(), new EndpointAddress(.....));
IMyService proxy = factory.CreateChannel();
并且您应该能够将其强制转换为ICommunicationObject
并检查其状态:
ICommunicationObject comobj = (ICommunicationObject)proy;
if(comobj.State != CommunicationState.Faulted)
{
// call the service method
}
在这一系列陈述中,哪个不再适用于你?