【问题标题】:WCF Client Proxy StateWCF 客户端代理状态
【发布时间】:2010-03-16 22:45:44
【问题描述】:

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

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

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

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

? ((ICommunicationObject)flsProxy).State

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

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

只捕获异常会更好吗?

【问题讨论】:

    标签: wcf exception proxy


    【解决方案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
      }
    

    这一系列语句中的哪些地方不再适合您?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2023-03-22
      • 2011-09-28
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多