Consuma um serviço duplex wcf no aplicativo de console
-
26-09-2019 - |
Pergunta
Eu tenho um serviço duplex wcf com o trabalho bem no Silverlight. Mas o mesmo serviço que quero consumir no aplicativo Windows Console. Meu código da seguinte forma:
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á "vazio":
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>
Isso me dá um erro:
A ligação 'CustomBinding' não suporta a criação de nenhum tipo de canal. Isso geralmente indica que os elementos de ligação em uma encomenda foram empilhados incorretamente ou na ordem errada. Um transporte é necessário na parte inferior da pilha. A ordem recomendada para o BindingElements é: transactionflow, reliableSession, segurança, compositeduplex, Oneway, StreamSecurity, MessageEncoding, [...
Você poderia me ajudar? Desde já, obrigado.
Solução
O problema é que PollingDuplexHttpBinding e elemento de ligação relacionados estão disponíveis apenas na API Silverlight. Portanto, quando você inicia o novo projeto .NET (aplicativo de console no seu caso), você não pode usar o mesmo código, porque .NET não contém pollingDuplexBindingElement