Привязка WCF с SOAP HTTPS и дуплексом

Я обнаружил, что мне нужно найти привязку WCF, которая использует HTTPS / SOAP и должна быть дуплексной. Раньше я программно использовал 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 });

        }

Это дает мне исключение недопустимой операции при проверке мыла по требованиям безопасного транспорта, говоря, что мой контракт настроен с режимом аутентификации, который требует целостности и конфиденциальности. Однако транспорт не может обеспечить целостность и конфиденциальность.

Похоже, мой HttpsTransportBindingElement неверен? Я не уверен.

Спасибо

редактировать:

Мне удалось заставить WSDualHttpBinding работать в какой-то момент, но похоже, что HTTPS с ним невозможен (как и другие в Интернете, которые говорят, что его даже не следует использовать)


person kyliod    schedule 17.05.2012    source источник


Ответы (1)


HTTP не является дуплексным протоколом - его запрос / ответ - поэтому wsDualHttpBinding использует два соединения - по одному в каждом направлении. Silverlight обеспечивает дуплексный режим через HTTP путем опроса сообщений от клиента под покровом.

NetTcpBinding использует TCP, который вполне может быть дуплексным.

Если вы можете подождать, пока позже в этом году выйдет 4.5, у него есть NetHttpBinding, который выполняет дуплексную связь с использованием протокола WebSocket.

person Richard Blewett    schedule 18.05.2012
comment
У меня с 2 подключениями все нормально. Можно ли настроить wsDualHttpBinding (или использовать аналогичные элементы привязки) для использования https? - person kyliod; 18.05.2012
comment
почему требуется SSL - сообщения защищены с помощью WS-Security. Что такое драйвер SSL? - person Richard Blewett; 18.05.2012
comment
Это дело клиента. У них есть xml-шлюз между клиентом и сервером, для которого требуется https / soap. - person kyliod; 18.05.2012