【发布时间】:2012-05-01 12:10:55
【问题描述】:
如何通过流对象向服务发送客户端计算机上大文件的引用,然后从客户端计算机开始逐个下载(我决定每秒传输多少 MB)?使用时有什么限制吗?
【问题讨论】:
-
您是否在 IIS 中托管 WCF 服务?
-
是的。您需要更多详细信息吗?
如何通过流对象向服务发送客户端计算机上大文件的引用,然后从客户端计算机开始逐个下载(我决定每秒传输多少 MB)?使用时有什么限制吗?
【问题讨论】:
IIS 不支持流式传输 - 它缓冲整个请求。
CodeProject article: WCF 4.5 fixes this
在此之前,如果您使用 IIS,整个文件将在传递给您的服务之前存储在服务器内存中。
目前的解决方案是分块发送文件 - 每个块在单独的服务调用中发送。
这也有助于您限制带宽。这不是 WCF 内置的——你必须自己做。您可以在客户端或服务器上限制每个块。
【讨论】:
int index 并将其与每个块一起发送。无论如何,客户端都应该序列化服务调用,因此一次只有一个调用在进行中。