WCF中流媒体服务合同的大小和超时

时间:2009-02-17 22:48:51

标签: c# wcf streaming wcf-binding

我目前正在开展一个小项目,我需要通过互联网发送一个可能很大的文件。

经过一番辩论后,我决定选择流媒体选项,而不是采用分块方法。文件可能非常大,我真的不想指定一个确切的上限,2GB可能是4GB,谁知道。

自然,这可能需要很长时间。我再也不想暂停。它只需要花费的时间,无所谓。

在尝试不同大小的不同文件时,我慢慢地,一步一步地调整了BasicHttpBinding的属性。我只是想知道我想出的价值观是否基本没问题,或者它们是否完全是邪恶的?

transferMode="Streamed"
sendTimeout="10675199.02:48:05.4775807"
receiveTimeout="10675199.02:48:05.4775807"
openTimeout="10675199.02:48:05.4775807"
closeTimeout="10675199.02:48:05.4775807"
maxReceivedMessageSize="9223372036854775807"

这只是感觉不对,这些只是每个底层数据结构的最大可能值。但我不知道还能做什么。

再次:

这基本上是正确的方法吗?或者我在这里完全误解和滥用框架?

由于

2 个答案:

答案 0 :(得分:2)

嗯,更自然的方法可能是以中型块的顺序发送文件,并提交最终消息;这也可以从错误中恢复。完全开放的数字可能存在轻微的DOS问题......

答案 1 :(得分:0)

当WCF客户端和服务器之间的连接通过VPN时,我已经遇到了流式传输问题。如果有兴趣,请阅读this thread中的更多内容。

如果流足够大,可以流式传输超过一分钟 - 会发生异常。