WCF客户端代理状态

时间:2010-03-16 22:45:44

标签: wcf exception proxy

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

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

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

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

? ((ICommunicationObject)flsProxy).State

但它给了这个例外......

  

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

抓住异常会更好吗?

1 个答案:

答案 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
  }

在这一系列陈述中,哪个不再适用于你?