2012-02-01 131 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消息。默認值是文本。