Состояние прокси клиента WCF - PullRequest
2 голосов
/ 17 марта 2010

Как мне проверить состояние моего прокси перед тем, как звонить в мою службу WCF.

У меня есть дуплексный канал, созданный с использованием фабрики дуплексных каналов.

Прежде чем делать какие-либо вызовы на сервер, я хочу проверить состояние прокси-объекта, созданного из фабрики каналов.

Я видел это в книге ... (для использования в ближайшем окне)

? ((ICommunicationObject)flsProxy).State

Но это дало это исключение ...

Невозможно получить поля или вызвать методы для экземпляра типа System.ServiceModel.ICommunicationObject, поскольку он является прокси-сервером для удаленный объект.

Лучше просто ловить исключения?

1 Ответ

1 голос
/ 17 марта 2010

Если вы создаете свой прокси-клиент, используя 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
  }

Где в этой цепочке утверждений он больше не работает для вас ??

...