我正在使用WCF实现一个大型文件流应用程序.
当我为MaxReceivedMessageSize和MaxBufferSize设置配置时出现问题.当这些参数相同时,系统工作正常.但是,当我选择不同的值时,它会给出错误消息,
对于TransferMode.Buffered,MaxReceivedMessageSize和MaxBufferSize必须是相同的值.
但我对http://msdn.microsoft.com/en-us/library/ms733742.aspx中的信息感到困惑,如下所示,
例如,假设您的服务必须接收最大4 GB的文件并将其存储在本地磁盘上.假设您的内存受限制,一次只能缓冲64 KB的数据.然后,您将MaxReceivedMessageSize设置为4 GB,MaxBufferSize设置为64 KB.此外,在您的服务实现中,您必须确保只读取64 KB块中的传入流,并且在将前一个块写入磁盘并从内存中丢弃之前不要读取下一个块.到4 GB和MaxBufferSize到64 KB.此外,在服务实现中,必须确保只读取64 KB块中的传入流,并且在将上一个块写入磁盘并从内存中丢弃之前不要读取下一个块.
谁能解释一下这个问题的原因?
这是因为TransferMode.如果要使用与消息大小不同的缓冲区大小,则应将其设置为流式传输.
传输支持两种在每个方向上传输消息的模式:
缓冲传输将整个消息保存在内存缓冲区中,直到传输完成.
流传输仅缓冲消息头并将消息体作为流公开,从中可以一次读取较小的部分.
| 归档时间: |
|
| 查看次数: |
6067 次 |
| 最近记录: |