为什么在实现 WCF 流时 maxReceivedMessageSize 属性是相关的?既然缓冲和持久性是由流的消费者处理的,为什么 WCF 会关心单个服务操作可能需要多长时间或多长时间?
我正在开发一个可以处理从服务器到客户端并返回的大文件的项目。我认为 WCF 流是一个很好的选择,因为它应该允许处理理论上无限的文件大小。我的客户端和服务器都将 transportMode(在绑定上)设置为“Streamed”,并且消息设计为包含 Streams。然而,这还不够,因为我得到一个 CommunicationException 指示我需要增加 maxReceivedMessageSize 属性。按照异常的建议,神奇地增加属性可以让一切正常工作。
我担心 WCF 迫使我“限制”我的服务/客户端可以处理多少,即使流应该是“无限的”。如果出现的文件恰好比我的绑定配置大,则会发生相同的 CommunicationException。我不明白为什么 WCF 会任意限制我处理大文件的能力,我发送和存储这些文件的“时间”和“方式”现在是“我的”业务,因为我有一个可以随意使用的流。
我错过了什么吗?