4

最近、いくつかのSilverlight3WCFサービスを新しいバイナリhttpバインディングを使用するように変換しました。これらのサービスで逆シリアル化するために長い文字列がサーバーに送信されることがよくあります。以前は、データを正しく読み取ることができるようにするために使用していました。ただし、新しいバインディングでは、要素を追加する正しい場所が見つかりません。

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

これが1つの試みです:

      <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を含めるのは良い考えではないようです。では、バイナリエンコーディングのみを使用して、大きな文字列の逆シリアル化を可能にするためにリーダーのクォータを増やすにはどうすればよいですか?

4

1 に答える 1

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>
于 2009-07-21T18:44:09.937 に答える