我对WCF服务器进行了测试,其中来自服务器的响应超出了客户端绑定对象中定义的MaxRecievedMessageSize
属性,从而产生CommunicationException
。我使用Fiddler检查了请求和响应。尽管超过了MaxRecievedMessageSize
,但整个响应都会发送给客户端。
我相信我错过了这种行为。在我看来,没有带宽被保存,因为已经收到了数据。客户端应用程序可能已经处理了数据,但客户端绑定在被提供给应用程序之前已被丢弃。
如果在客户端节省带宽不是MaxReceivedMessageSize的目的,它的用途是什么?
答案 0 :(得分:1)
答案很简单:安全。
如果您的客户端可以对服务器说:“哦,顺便说一句,不要给我发送大于X字节的回复”,这对带宽确实会更好“,但这是他们没有实现的: - )
即使它是,如果服务器有错误,或故意行为不端怎么办... 如果服务器返回2 TB字符串怎么办?然后,您的客户端将尝试分配2TB缓冲区以接收请求,并且可能会获得OutOfMemoryException。这会让你的客户失望。