Я столкнулся с проблемой здесь.
Я делаю проект клиент / сервер, который представляет собой веб-сервис WCF, вызывающий для получения данных. Из-за огромных данных о передаче мне пришлось программно изменять привязку к настраиваемой привязке (не через файл конфигурации).
Я создаю новую пользовательскую привязку, также называемую пользовательскую привязку.
Пример класса:
public class MyCustomBinding : CustomBinding
и переопределить функцию BindingElementCollection:
public override BindingElementCollection CreateBindingElements()
{
WSHttpBinding wSHttpBinding = new WSHttpBinding("RMSKeberosBinding"); //this is to load the configuration from app.config. because i want to copy the setting of wsHttpConfig to my custom binding.
BindingElementCollection wSHttpBindingElementCollection = wSHttpBinding.CreateBindingElements();
TransactionFlowBindingElement transactionFlowBindingElement = wSHttpBindingElementCollection.Remove<TransactionFlowBindingElement>();
SymmetricSecurityBindingElement securityElement = wSHttpBindingElementCollection.Remove<SymmetricSecurityBindingElement>();
MessageEncodingBindingElement textElement = wSHttpBindingElementCollection.Remove<MessageEncodingBindingElement>();
HttpTransportBindingElement transportElement = wSHttpBindingElementCollection.Remove<HttpTransportBindingElement>();
GZipMessageEncodingBindingElement gzipElement = new GZipMessageEncodingBindingElement(); // this is from microsoft sample. i want to add gzip as a compress to my message.
BindingElementCollection newCol = new BindingElementCollection();
newCol.Add(transactionFlowBindingElement);
newCol.Add(securityElement);
newCol.Add(gzipElement);
newCo .Add(transElement);
return newCol;
}
я пытаюсь скопировать все настройки из wshttpbinding и добавить gzip в качестве кодировщика сообщений.
Сжатие зашифрованных данных приведет к увеличению исходного размера данных.
это потому, что SymmetricSecurityBindingElement из WSHttpBinding сделал шифрование.
Как сделать это правильно? я хочу, чтобы настройки безопасности из wshttpbinding, а также gzip работали.