BasicHttpBinding.MaxBufferSize 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定自通道接收訊息的緩衝區大小上限 (以位元組為單位)。
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
屬性值
儲存訊息之緩衝區的大小上限 (以位元組為單位)。在為此繫結設定的端點處理訊息時,可以將訊息儲存在緩衝區中。 預設值為 65,536 位元組。
範例
下列範例會將 MaxBufferSize 設定為 1,000,000 個位元組。
BasicHttpBinding binding = new BasicHttpBinding();
// set to one million
binding.MaxBufferSize = 1000000;
這個屬性的值也可以在組態檔中設定。
備註
如果在處理時緩衝區中沒有足夠的記憶體可以儲存訊息,就必須從 CLR 堆積配置額外的記憶體,因而增加記憶體回收負荷。 從 CLR 記憶體回收堆積所產生的大量配置表示緩衝區集區太小,而提供較大的配置便可改善效能。
MaxBufferSize 屬性及其重要性的值會根據訊息在接收的通道上緩衝處理或串流處理而有所不同:
對於緩衝傳輸 (設定為 TransferMode TransferMode.Buffered) ,這個值一律等於 屬性所 MaxReceivedMessageSize 指定的。
如果是經過資料流處理的傳輸 (TransferMode 設定為 TransferMode.Streamed),則只有 SOAP 標頭必須經過緩衝才能產生訊息。 本文可視需要以資料流處理。 在此情況下,MaxBufferSize 小於或等於 MaxReceivedMessageSize ,其中 MaxReceivedMessageSize 系結整體訊息的大小 (標頭和本文) ,而 MaxBufferSize 只會限制 SOAP 標頭的大小。
此處針對緩衝區大小所設的限制是為了讓訊息交換的效能最佳化。 如果訊息超出設定的緩衝區上限值,訊息不會被捨棄。 相反地,系統會從 CLR 堆積要求更多記憶體,進而比使用緩衝區造成更多記憶體回收負荷。
注意
MaxBufferSize 和 MaxReceivedMessageSize 的設定是本機行為設定。 表示這些設定不會以中繼資料的方式傳送到其他端點。 當您從中繼資料產生服務的 Proxy 時,如果訊息大小上限為 2GB,則此 Proxy 的預設值仍為 64K, 讓訊息和訊息緩衝區大小適當限制的控制落在本機系統管理員的管轄範圍內。