繁体   English   中英

WCF在CustomBinding中为HttpTransportBindingElement修改ReaderQuotas

[英]WCF modifying ReaderQuotas for HttpTransportBindingElement in CustomBinding

BasicHttpBinding类有一个ReaderQuotas属性,您可以访问该属性来覆盖MaxArrayLengthMaxBytesPerRead等属性。

CustomBinding使用HttpTransportBindingElement而不是BasicHttpBinding时,如何访问ReaderQuotas以实现相同的功能?

即:

var bindingElement = new HttpTransportBindingElement();
bindingElement.MaxBufferSize = 65536; // works
bindingElement.ReaderQuotas.MaxArrayLength = 65536; // error no ReaderQuotas member

var binding = new CustomBinding(bindingElements);
binding .ReaderQuotas.MaxArrayLength = 65536; // also no ReaderQuotas member

在此先感谢您的帮助。

你能尝试以下方法:

var binding = new CustomBinding();
var myReaderQuotas = new XmlDictionaryReaderQuotas();
myReaderQuotas.MaxStringContentLength = 5242880;
binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, myReaderQuotas, null); 

希望有所帮助。

您需要使用消息编码绑定元素TextMessageEncodingBindingElement而不是HttpTransportBindingElement

        var bindingElement = new TextMessageEncodingBindingElement();
        bindingElement.ReaderQuotas.MaxArrayLength = 65536;

        var binding = new CustomBinding();
        binding.Elements.Add(bindingElement);

可以使用其他消息编码器类型 (即二进制或MTOM),但如果您进行直接转换,则basicHttpBinding的默认值为text

WSMessageEncoding的值,指示是使用MTOM还是Text / XML来编码SOAP消息。 默认值为Text。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM