7

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

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

MaxReceivedMessageSize と ReaderQuotas を最大値まで増やしてみましたが、うまくいきませんでした。

また、ログを有効にして、「送信」されるメッセージのサイズを確認しました。それは間違いなく最大値にはほど遠いです。372KB の XML にシリアル化されたオブジェクトを送信することについて話しています。

2 つの質問:

  1. メッセージが参照している「サーバーログ」を知っている人はいますか? EventViewerを確認しましたが、何も表示されません...

  2. ここで適用される他の構成設定を知っている人はいますか?

4

4 に答える 4

5

あなたの質問は、Shawn Wildermuth が Silverlight アプリケーションで大きなメッセージ サイズに問題を抱えていたというブログ投稿を思い出させてくれました。おそらくこれはあなたを助けるでしょう:

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF

ショーン 言います:

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

于 2009-11-10T15:40:23.537 に答える
1

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

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

于 2009-11-10T15:36:28.367 に答える
1

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

 <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"

                    switchValue="Critical, Error, Warning"
              >
        <listeners>
          <add name="traceListener"
                        type="System.Diagnostics.XmlWriterTraceListener"
                        initializeData="F:\log-data\ServiceTrace.svclog"
            />
        </listeners>
      </source>
    </sources>

  </system.diagnostics>
于 2009-11-10T15:45:36.087 に答える
0

2つのこと:

  • サーバー側とクライアント側の構成を見せてもらえますか (関連するセクションのみ - エンドポイント、バインディング構成)

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

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

于 2009-11-10T15:45:40.517 に答える