4

我最近将一些Silverlight 3 WCF服务转换为使用新的二进制http绑定。长字符串通常会发送到服务器以便在这些服务中进行反序列化,并且以前我曾经用它来确保数据可以正确读取。然而,随着新的绑定我无法找到正确的位置要添加的元素:如何增加服务器端的二进制Http绑定MaxStringContentLength

 <customBinding> 
     <binding name="binaryHttpBinding"> 
      <binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"/> 
      <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> 
     </binding> 
     </customBinding> 

这里有一个尝试:

 <customBinding> 
     <binding name="binaryHttpBinding"> 
      <binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"/> 
      <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> 
      <textMessageEncoding> 
      <readerQuotas maxDepth="32" maxStringContentLength="5242880" 
      maxArrayLength="200000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      </textMessageEncoding> 
     </binding> 
     </customBinding> 

引起其他的问题 - 这似乎是一个很好的不想法在同一个绑定中有一个二进制编码和一个textMessageEncoding。因此,只使用二进制编码,我如何增加阅读器配额以允许大型字符串的反序列化?

回答

12

这是我找到了解决办法:

 <customBinding> 
     <binding name="binaryHttpBinding"> 
      <binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"> 
      <readerQuotas maxDepth="32" maxStringContentLength="5242880" 
      maxArrayLength="200000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      </binaryMessageEncoding> 
      <httpTransport maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/> 
     </binding> 
     </customBinding> 
相关问题