0

Silverlight クライアント アプリケーションと WCF Web サービス間の通信に、Polling Duplex Binding を使用しています。xml 文字列パラメーターを使用して Web サービスからメソッドを非同期的に呼び出すことにより、Silverlight Web アプリケーションから WCF Web サービスにメッセージをプッシュします。非常に大きなxml文字列を送信しようとするまで、すべてがうまくいきました。次に、メッセージが表示されます。

「メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました: 操作 'SendUserSelection' の要求メッセージの本文を逆シリアル化する際にエラーが発生しました。XML データの読み取り中に、文字列コンテンツの最大長クォータ (8192) を超えました。このクォータは、変更することで増加する可能性があります。 XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxStringContentLength プロパティ。"

この場合、通常、web.config ファイル内のバインディングの maxStringContentLength プロパティを増やします。ここでの問題は、readerQuotas 要素 (maxStringContentLength を含む) をバインディングに追加しようとすると、まったく考慮されないことです。これは既知の問題であることがわかりました: http://blogs.msdn.com/b/silverlightws/archive/2010/04/04/some-known-wcf-issues-in-silverlight-4.aspx。そこに示されている解決策は、Polling Duplex 要素を含むカスタム バインディングを使用することです。私はそれを試しましたが、どういうわけかうまくいきませんでした。

私の質問は、この問題に対する他の回避策がありますか、それともこれが唯一の解決策ですか?

4

1 に答える 1

1

いいえ、本当にカスタム バインディングに移動する必要があります。PollingDuplexHttpBinding クラスはリーダー クォータを公開しないため、クォータの問題がある場合は、実際にはカスタム バインディング ルートに移動する必要があります。

于 2011-06-10T15:33:05.407 に答える