7


1

WCF最大メッセージサイズクォータ

WCFサービス(IISではなくWindowsサービスでホストされている)を呼び出そうとしているときに、次のエラーが発生します。

_ リモートチャネルの受信メッセージの最大メッセージサイズクォータを超えました。 詳細についてはサーバーログを参照してください。 _

幸運なことに、MaxReceivedMessageSizeとReaderQuotasを最大値に増やすことを試みました。

私はまたロギングをオンにし、「送信」されるメッセージサイズをチェックしました。それは間違いなく最大に近いところはありません。 372KBのXMLにシリアル化されたオブジェクトを送信することについて話しています。

二つの質問:

  1. メッセージが参照しているのが「サーバーログ」であることを誰かが知っていますか? I’ve EventViewerをチェックしましたが、何も表示されません…​

  2. 他にどのような設定がここで適用されるのかを誰かが知っていますか?

4 Answer


5


Shawn WildermuthによるSilverlightアプリケーションのLarge Message Sizesに問題があるというブログ記事について、あなたの質問は私に思い出させました。 おそらくこれはあなたを助けるでしょう:

ショーンは言う:

_ コツは、web.configのcustomBindingを変更して、より大きなデフォルトを使用することです。 それは合理的なサイズとして2MBを選びました。 もちろん、上記のように2GBに設定してもうまくいきますが、攻撃に対して脆弱になります。 あなたの最大のリクエストより大きくはないが大きすぎないサイズを選択してください。 その推測ゲーム。 これらを設定するには、それらをweb.configに追加して、httpTransportノードに配置する必要があります。 _


1


サーバーログとは、それをオンにしたときに作成されるトレースファイルとログファイルを意味します。 これが MSDNリンクです。

私が書くアプリケーションでより高い値を持つ必要があるWCFで遭遇するプロパティは、maxReceivedMessageSize、maxStringContentLength、maxArrayLength、およびmaxBufferSizeです。 それらを増やして何が起こるか見てみてください。 WCFは例外を飲み込むのが好きなのでデバッグするのが面倒かもしれません。


1


次のようにアプリケーション設定でサーバーログとパスを指定できます。



0


2つのこと

  • あなたは私達にサーバーとクライアント側の設定を表示することができます(ちょうど関連するセクション - エンドポイント、バインディング設定)

  • 両側(クライアントとサーバー)の値を変更しましたか?

あなたが影響を与えることができるサイズ設定の全体がたくさんあります…​.