2012-04-10 5 views
1

Hallo,ICommunicationObject.State funktioniert nicht?

ich meinen WCF-Client mit Duplex erstellen, das Problem ist, dass, wenn ich dies tun:

((ICommunicationObject)this.GetMyServiceInterfaceChannel).State 

ich die followin Ausnahme erhalten:

Kann nicht erhalten Felder oder Aufruf Methoden für die Instanz des Typs 'System.ServiceModel.ICommunicationObject', da es sich um einen Proxy für ein Remote-Objekt handelt.

Warum?

Ich muss überprüfen, ob der Kanal fehlerhaft ist.

Edit1:

ClientService clientService = new ClientService(); 
       InstanceContext context = new InstanceContext(clientService); 

       DuplexChannelFactory<My.ServiceContracts.IMyClientService> factory = new DuplexChannelFactory<My.ServiceContracts.IMyClientService>(context, connectionName); 

       factory.Credentials.UserName.UserName = anvandarNamn; 
       factory.Credentials.UserName.Password = password; 


       return factory.CreateChannel(); 

Antwort

3

Guss als IClientChannel, dann überprüfen Sie die Staats

Aber seien Sie vorsichtig, dass der Staat nur dann aktualisiert, wenn Sie einen Anruf tätigen. Wenn Sie testen möchten, dass der Kanal kein Timeout hat, ist es nicht möglich, bis Sie einen Anruf tätigen, die Ausnahme auszulösen.

+3

Ich bekomme die genau gleiche Ausnahme, wenn Sie den IClentChannel verwenden? – Banshee

+0

Können Sie den Code für die 'GetMyServiceInterfaceChannel' Erstellung hinzufügen? – Fabske

+0

Werfen Sie einen Blick auf meine Bearbeitung. – Banshee

Verwandte Themen