2010-10-26 23 views
1

J'ai un service duplex wcf avec le travail bien dans silverlight. mais le même service que je veux consommer dans l'application console Windows. Mon code comme suit:Consommez un service duplex wcf dans l'application console

var context = new InstanceContext(this); 
    var address = new EndpointAddress("http://localhost:31881/PubSubService.svc"); 
    var binding = new CustomBinding(
       new PollingDuplexBindingElement(), 
       new BinaryMessageEncodingBindingElement(), 
       new HttpTransportBindingElement()); 

    var client = new PubSubClient(context, binding, address); 
    client.Publish("topic", "content"); 

App.config est "vide":

<?xml version="1.0" encoding="utf-8" ?> 
    <configuration> 
    </configuration> 

Il me donne une erreur:

Reliure 'CustomBinding' ne prend pas en charge la création de tous les types de canaux. Cela indique souvent que les BindingElements dans une CustomBinding ont été empilés incorrectement ou dans le mauvais ordre. Un transport est requis au bas de la pile. La commande recommandée pour BindingElements est: TransactionFlow, ReliableSession, Sécurité, CompositeDuplex, OneWay, StreamSecurity, MessageEncoding, [...]

Pourriez-vous m'aider? Merci d'avance.

Répondre

1

Le problème est que PollingDuplexHttpBinding et l'élément de liaison associé sont disponibles uniquement dans l'API Silverlight. Ainsi, lorsque vous démarrez un nouveau projet .NET (application Console dans votre cas), vous ne pouvez pas utiliser le même code, car .NET ne contient pas PollingDuplexBindingElement