3

WCF サービスと、1 つのコンソール アプリケーションからメッセージを取得して別のコンソール アプリケーションに送信する単純な aspx ページがあります。メッセージ (xml 形式) の長さが 6000000 程度の場合は問題なく動作しますが、メッセージ サイズが 2 倍になると、次の例外がスローされなくなります。

「通信オブジェクト System.ServiceModel.Channels.ServiceChannel は、Faulted 状態のため、通信に使用できません。」

私はそれを追跡し、送信者アプリがメッセージを送信し、.aspx ページがそれを取得し、受信者アプリに送信するときに例外がスローされます。これがコードです。

public void SendMessage(string message)
{
    try
    {
         using (Receiver rec = new Receiver())
         {
              rec.SetMessage(message);
         }
    }
    catch (Exception e)
    { 
         Response.Write(e.Message);
         Response.Write(e.StackTrace);
    }
}

一連の構成設定を試しましたが、問題を解決するものはありませんでした。その理由は何ですか?

前もって感謝します。

4

1 に答える 1

4

それは簡単です。メッセージのサイズが許容サイズ (6000000) を超えると、FaultException がスローされます。FaultException は Exception から拡張されているため、コード内で適切にキャッチされています。データが大きい場合はサイズ制限も大きくするという事実よりも、これに問題はありません。

更新: 最大受信エラーについては、次のことを行う必要があります: 受信メッセージの最大メッセージ サイズ クォータ (65536) ....クォータを増やすには、MaxReceivedMessageSizeプロパティを使用します。

またはコードから:

WebHttpBinding binding = new WebHttpBinding();
binding.MaxReceivedMessageSize = 2147483647;

同様に、クライアント側でも。

于 2014-09-24T14:53:20.400 に答える