次の方法で共有


BasicHttpBinding.MaxBufferSize プロパティ

定義

チャネルからメッセージを受信するバッファーの最大サイズ (バイト単位) を取得または設定します。

public:
 property int MaxBufferSize { int get(); void set(int value); };
public int MaxBufferSize { get; set; }
member this.MaxBufferSize : int with get, set
Public Property MaxBufferSize As Integer

プロパティ値

Int32

このバインドで構成されるエンドポイントのメッセージが処理されるときに、メッセージを格納するバッファーの最大サイズ (バイト単位)。 既定値は 65,536 バイトです。

次の例では、 MaxBufferSize を 1,000,000 バイトに設定します。

BasicHttpBinding binding = new BasicHttpBinding();

// set to one million
binding.MaxBufferSize = 1000000;

このプロパティの値は、構成ファイルでも設定できます。

注釈

メッセージの処理中に、メッセージを保存する十分なメモリがバッファーにない場合は、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから大量の割り当てが行われることは、メッセージ バッファーのサイズが小さすぎること、および割り当てを増やすことでパフォーマンスが向上する可能性があることを示します。

MaxBufferSize プロパティの値とその重要性は、メッセージが受信されるチャネルでメッセージがバッファーに格納されているかストリーミングされているかによって異なります。

  • バッファーに格納されたトランスポート (TransferModeTransferMode.Buffered設定) の場合、この値はプロパティで指定された値と常に MaxReceivedMessageSize 等しくなります。

  • ストリーミング トランスポート (TransferModeTransferMode.Streamed に設定) では、SOAP ヘッダーだけをバッファーして、メッセージを生成する必要があります。 本文は、必要に応じてストリームに含めることができます。 この場合、MaxBufferSize は、メッセージ全体 (ヘッダーと本文) のサイズを境界とし、MaxBufferSize は SOAP ヘッダーのサイズのみを境界とする値以下MaxReceivedMessageSizeMaxReceivedMessageSizeです。

ここで設定されるバッファー サイズに対する制限は、メッセージ交換のパフォーマンスを最適化するためのものです。 メッセージがバッファーに設定された最大値を超える場合に、メッセージが失われることはありません。 この場合は、CLR ヒープからのメモリがより多く要求され、これによりバッファーの使用時よりも多くのガベージ コレクションのオーバーヘッドが生じます。

注意

MaxBufferSize と MaxReceivedMessageSize の設定は、ローカルの動作設定です。 これは、それらがメタデータの他のエンドポイントに転送されないことを意味します。 メタデータから、最大メッセージ サイズ 2 GB でサービスへのプロキシを生成する場合、プロキシは既定値の 64K のままです。 これによって、メッセージおよびメッセージ バッファー サイズの適切な制限を、引き続きローカル管理者が制御できます。

適用対象