Как увеличить MaxStringContentLength на стороне сервера для двоичного связывания Http - PullRequest
4 голосов
/ 21 июля 2009

Недавно я преобразовал некоторые службы 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 в одной привязке. Таким образом, используя только двоичное кодирование, как я могу увеличить квоты считывателя, чтобы разрешить десериализацию больших строк?

1 Ответ

12 голосов
/ 21 июля 2009

Вот решение, которое я нашел:

      <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>
...