Я обнаружил, что мне нужно найти привязку 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 с ним невозможен (как и другие в Интернете, которые говорят, что его даже не следует использовать)