4

最近、新しいバイナリHTTPバインディングを使用するようにSilverlight 3 WCFサービスを変換しました。長い文字列は、これらのサービスでデシリアライズするためにサーバーに送信されることがよくあり、以前はデータを正しく読み取るために使用しました。しかし、新しいバインディングと私は要素を追加するための正しい場所を見つけることができません。バイナリHttpバインディング用にサーバー側でMaxStringContentLengthを増やす方法

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

他の問題を引き起こした - それが良いように見えるしていません:

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

ここに1つの試みですアイデアはバイナリエンコーディングと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> 
関連する問題