2010-03-16 122 views
2

如何在调用我的WCF服务之前测试我的代理的状态。WCF客户端代理状态

我有一个使用双工通道工厂创建的双工通道。

在调用服务器之前,我想检查通道工厂创建的代理对象的状态。

我看到这个在一本书......(在即时窗口中使用)

? ((ICommunicationObject)flsProxy).State 

但是它给了这个异常...

无法获取字段或调用方法上类型'System.ServiceModel.ICommunicationObject'的实例,因为它是 远程对象的代理。

刚刚发现异常是否更好?

回答

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 
    } 

在这个陈述链中它不再适用于你?