我一直认为,WCF BasicHttpBinding选项MaxBufferSize
旨在保护我免受DoS攻击,但documentation中的以下注释很奇怪:
如果消息超过为缓冲区设置的最大值,则不会丢弃该消息。相反,从CLR堆请求更多内存,这比使用缓冲区产生更多的垃圾收集开销。
所以看起来属性MaxBufferSize
更多是默认值而不是 MaxBufferSize 。我想念一下吗?
答案 0 :(得分:3)
找到答案,谢谢BugFinder提示正确的方向。
MaxBufferSize
仅在流方案中非常重要。在缓冲 WCF场景中,必须将其设置为与MaxReceivedMessageSize
相同的值(否则将引发配置异常)。 MaxReceivedMessageSize
是我们免受DoS攻击(硬限制)的原因。