C# MaxBufferSize属性?

C# MaxBufferSize属性?,c#,wcf,C#,Wcf,我一直认为,WCF BasicHttpBinding选项MaxBufferSize旨在保护我免受DoS攻击,但是,中的以下注释很奇怪: 如果消息超过为缓冲区设置的最大值,则不会删除该消息。相反,从CLR堆请求更多内存,这会比使用缓冲区产生更多的垃圾收集开销 因此,属性MaxBufferSize看起来更像是一个默认值,而不是MaxBufferSize。我错过了什么吗?找到了答案,谢谢你的错误发现者给了我正确方向的提示 MaxBufferSize仅在流媒体场景中才非常重要。在缓冲WCF方案中,必须将

我一直认为,WCF BasicHttpBinding选项
MaxBufferSize
旨在保护我免受DoS攻击,但是,中的以下注释很奇怪:

如果消息超过为缓冲区设置的最大值,则不会删除该消息。相反,从CLR堆请求更多内存,这会比使用缓冲区产生更多的垃圾收集开销


因此,属性
MaxBufferSize
看起来更像是一个默认值,而不是MaxBufferSize。我错过了什么吗?

找到了答案,谢谢你的错误发现者给了我正确方向的提示


MaxBufferSize
仅在流媒体场景中才非常重要。在缓冲WCF方案中,必须将其设置为与
MaxReceivedMessageSize
相同的值(否则会引发配置异常)
MaxReceivedMessageSize
是使我们免受DoS攻击的工具(硬限制)。

找到了答案,感谢BugFinder提供正确方向的提示


MaxBufferSize
仅在流媒体场景中才非常重要。在缓冲WCF方案中,必须将其设置为与
MaxReceivedMessageSize
相同的值(否则会引发配置异常)
MaxReceivedMessageSize
是使我们免受DoS攻击的工具(硬限制)。

好吧,它确实做到了它所暗示的事情。它是您的应用程序将接受的最大块,数据包可以更小,任何较大的数据都将以块的形式出现。什么是“包”?最后,在我的服务中调用一个方法,它一次接收所有参数。不再有“包”的概念…因此所有内存必须同时分配。或者MaxBufferSize仅与流媒体合约相关?可以将其视为调整应用程序的一种方式。正如它所说的,超过maxbuffer大小的请求不会被丢弃,例如,如果您将其设置为5k,并且有人向您发送1gb,您将得到200(ish)个块,这些块的开销比您将maxbuffer设置为1gb(好的,一些示例正在进行)时要大。一个“包”肯定会是一个请求?嗯,它确实是它所暗示的。它是您的应用程序将接受的最大块,数据包可以更小,任何较大的数据都将以块的形式出现。什么是“包”?最后,在我的服务中调用一个方法,它一次接收所有参数。不再有“包”的概念…因此所有内存必须同时分配。或者MaxBufferSize仅与流媒体合约相关?可以将其视为调整应用程序的一种方式。正如它所说的,超过maxbuffer大小的请求不会被丢弃,例如,如果您将其设置为5k,并且有人向您发送1gb,您将得到200(ish)个块,这些块的开销比您将maxbuffer设置为1gb(好的,一些示例正在进行)的“包”要大这肯定是一个请求吗?我在java应用程序中使用c#wcf服务,配置这个MaxBufferSize我在java应用程序中使用c#wcf服务,配置这个MaxBufferSize