如何增加MaxStringContentLength在服务器端二进制HTTP绑定
-
18-09-2019 - |
题
我最近转换的Silverlight一些3 WCF服务能够使用该新的二进制HTTP绑定。长字符串经常派人过来服务器进行反序列化在这些服务和我以前用过,以确保数据可以被正确读取。然而,随着新的绑定我无法找到正确的位置要添加的元素:
<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。所以只使用二进制编码,我怎么能增加读者的配额,让大串的反序列化?
解决方案
下面是我找到了解决方案:
<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>
不隶属于 StackOverflow