2010-03-16 118 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 
    } 

在這個陳述鏈中它不再適用於你?