我在这里面临一个问题。我正在做一个客户端/服务器项目,这是 WCF Web 服务调用以获取数据。由于传输的大量数据,我必须以编程方式将绑定更改为自定义绑定(而不是通过配置文件。)
我正在创建一个新的用户定义绑定,也就是自定义绑定。该类的示例是:
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 作为消息编码器。 压缩加密数据会导致原始数据大小变大。 这是因为来自 WSHttpBinding 的 SymmetricSecurityBindingElement 进行了加密。如何以正确的方式做到这一点?我希望来自 wshttpbinding 的安全设置以及 gzip 工作。