使用SOAP HTTPS和Duplex进行WCF绑定

时间:2012-05-17 21:01:38

标签: c# wcf soap https duplex

我发现自己需要找到一个使用HTTPS / SOAP的WCF绑定,并且必须是双工的。我之前以编程方式使用NetTcpBinding,但绑定现在必须是HTTPS / SOAP。我做了一些研究,似乎没有创建自己的CustomBinding是不可能的。

然而,我有点迷失在做什么(不熟悉绑定和设置)。我似乎无法获得我需要的正确绑定元素:

    public class CustomHttpsBinding : CustomBinding
    {
        public CustomHttpsBinding() 
        {
        }


        public override BindingElementCollection CreateBindingElements()
        {
            ReliableSessionBindingElement https = new ReliableSessionBindingElement();

            SecurityBindingElement security = SecurityBindingElement.CreateCertificateOverTransportBindingElement();

            CompositeDuplexBindingElement duplex = new CompositeDuplexBindingElement();

            SslStreamSecurityBindingElement ssl = new SslStreamSecurityBindingElement();

            MessageEncodingBindingElement encoding = new GZipMessageEncodingBindingElement((MessageEncodingBindingElement)  new BinaryMessageEncodingBindingElement());

            HttpsTransportBindingElement transport = new HttpsTransportBindingElement();

            return new BindingElementCollection(new BindingElement[] { https, security, duplex, ssl, encoding, transport });

        }

在检查SOAP上的安全传输要求时,它给我一个无效的操作异常,说我的合同配置了一个需要完整性和机密性的身份验证模式。然而,运输不能提供完整性和保密性。

好像我的HttpsTransportBindingElement不正确?我不确定。

由于

编辑:

我确实设法让WSDualHttpBinding在某一时刻工作,但似乎HTTPS不可能用它(以及互联网上的其他人说它甚至不应该被使用)

1 个答案:

答案 0 :(得分:1)

HTTP不是双工协议 - 它的请求/响应 - 这就是为什么wsDualHttpBinding使用两个连接 - 每个方向一个。 Silverlight通过轮询来自客户端的消息来实现HTTP上的双工

NetTcpBinding使用TCP,非常乐意成为双工

如果您可以等到今年晚些时候发布4.5,那么NetHttpBinding会使用WebSocket协议进行双工