Как увеличить 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