2011-08-02 15 views
9

操作 'CreateTransactionEntity'に対する応答メッセージの本体を逆シリアル化する際にエラーが発生しました。 XMLデータを読み取っているときに、最大文字列コンテンツ長の制限(8192)が超過しています。この制限は、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxStringContentLengthプロパティを変更することによって増加させることができます。最大文字列の内容の長さquota(8192)

ねえ、私は、件名にインターネットを閲覧した後

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

...私は私のweb.configファイルの実物より大きいreaderQuotaノードを持っているにもかかわらず、このエラーを取得しておきますまともな答えが出てこないようです。アドバイスがあれば本当に感謝しています。

+0

は、サーバーのweb.configファイルということですか?エラーメッセージはクライアントから来ているようです(返信をデシリアライズするのはエラーです)。クライアントコードは何ですか? –

+0

サービス/クライアントが設定を使用していますか?エラースタックトレースと* full *構成ファイル(も定義されています)を投稿できますか? – carlosfigueira

+0

クライアントの設定を確認する必要があります。 – Jack

答えて

15

バインディングに指定する値を確実に取得するには、<binding>要素のバインディング名を<endpoint>要素のbindingConfiguration属性に割り当てる必要があります。そうしないと、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> 

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

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

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

1

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

HTH、 アミット・バティア

+0

これはすべて良い答えです。本当に起こったのは、私が実際にエンドポイント要素にバインディングの名前を入れていなかったことです。サービスリフレクションツールを使用してプロジェクトにサービスを追加していました。私はいくつかの属性をデフォルトに設定していると思います。私はこれらの値を変更し、すべてがうまくいくように見えます。 – SoftwareSavant

関連する問題