2012-02-01 128 views
4

BasicHttpBinding类有一个ReaderQuotas属性,您可以访问覆盖的属性,如MaxArrayLengthMaxBytesPerReadWCF修改为HttpTransportBindingElement ReaderQuotas在CustomBinding

如何访问ReaderQuotas来实现同样的事情用HttpTransportBindingElement时在CustomBinding而不是BasicHttpBinding

即:

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 

在此先感谢您的帮助。

回答

2

你可以试试下面的:

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

希望有所帮助。

0

您需要使用编码绑定元素TextMessageEncodingBindingElementHttpTransportBindingElement消息:

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

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

其他message encoder types(即二进制或MTOM)可以使用,但如果你正在做直转换the default for basicHttpBinding is text

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