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 的设置是本地行为设置。 这意味着它们不会传输到元数据中的其他终结点。 如果从元数据生成最大消息大小为 2GB 的服务的代理,则代理的默认值仍为 64K。 这会控制本地管理员范围内的消息和消息缓冲区大小的适当边界。