客户端MaxReceivedMessageSize的目的是什么?

时间:2014-01-22 17:44:32

标签: wcf wcf-binding maxreceivedmessagesize

我对WCF服务器进行了测试,其中来自服务器的响应超出了客户端绑定对象中定义的MaxRecievedMessageSize属性,从而产生CommunicationException。我使用Fiddler检查了请求和响应。尽管超过了MaxRecievedMessageSize,但整个响应都会发送给客户端。

我相信我错过了这种行为。在我看来,没有带宽被保存,因为已经收到了数据。客户端应用程序可能已经处理了数据,但客户端绑定在被提供给应用程序之前已被丢弃。

如果在客户端节省带宽不是MaxReceivedMessageSize的目的,它的用途是什么?

1 个答案:

答案 0 :(得分:1)

答案很简单:安全。

如果您的客户端可以对服务器说:“哦,顺便说一句,不要给我发送大于X字节的回复”,这对带宽确实会更好“,但这是他们没有实现的: - )

即使它是,如果服务器有错误,或故意行为不端怎么办... 如果服务器返回2 TB字符串怎么办?然后,您的客户端将尝试分配2TB缓冲区以接收请求,并且可能会获得OutOfMemoryException。这会让你的客户失望。