9

操作'CreateTransactionEntity'の応答メッセージの本文の逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、文字列コンテンツの最大長クォータ(8192)を超えました。このクォータは、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxStringContentLengthプロパティを変更することで増やすことができます。

ねえ、web.configファイルに実物よりも大きいreaderQuotaノードがあるのに、このエラーが発生し続けます...

<system.serviceModel>
<bindings>
  <netTcpBinding>
    <binding name="BindingTcp"  maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                  maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </netTcpBinding>

この件についてインターネットを閲覧した後、私はまともな答えを思い付くことができないようです。何かアドバイスがあれば本当にありがたいです。

4

2 に答える 2

15

バインディングに指定した値が確実に取得されるようにするには、<binding>要素からのバインディングの名前を要素のbindingConfiguration属性に割り当てる必要があり<endpoint>ます。そうしないと、WCFは指定されたバインディングのデフォルト値を使用します。

<system.serviceModel>
  <bindings>
    <netTcpBinding>
      <binding name="BindingTcp"  maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      </binding>
    </netTcpBinding>

上記の例では、要素の名前として「BindingTCP」を割り当てています<binding>。したがって、エンドポイントでこれを行います。

<endpoint address="net.tcp://some.website.url/yourserivce" binding="netTcpBinding" bindingConfiguration="BindingTCP" contract="IYourContract" />

エラーがどこにあるか(クライアントまたはサーバー上)に応じて、変更する必要のある構成ファイルが決まります。エラーが両端で発生している場合は、両方の構成ファイルを変更してください。

于 2011-08-03T02:55:59.857 に答える
1

クライアントアプリケーションをチェックして、デフォルトのバインディング構成を使用しているかどうかを確認する必要があります。これを確認するより簡単な方法は、詳細レベルでWCFトレースをキャプチャし、ConstructChannelFactoryアクティビティのイベントを確認することです。

HTH、アミット・バティア

于 2011-08-03T11:20:43.953 に答える