1

我有一个 ServiceStack 客户端,它调用一个服务,该服务返回一个 100MB 到 10GB 的大数据文件。Stream.CopyTo目前,此客户端使用保存到文件的方法在 LAN 上完美运行。

当客户端通过 WAN(除了通过 LAN)运行时,如果它停止或失去连接,则恢复下载以及查看进度的能力变得很重要。

该服务支持发送部分文件,但我不清楚如何在 ServiceStack 客户端中支持这一点,或者即使它是内置的,我也没有意识到。

此外,复制到另一个的CopyTo方法不会报告其进度,因此对于一个大文件,它可能需要几个小时,而且您无法告诉它的进度。我看过有关报告进度的方法的帖子,但在我正在使用的课程的任何地方都找不到。streamstreamCopyFrom

我的环境是最新版本的 ServiceStack 和 Mac OS X 上的最新版本 Mono 和 Windows 上的 .NET 4.5。

能够对不同段的文件进行并发下载将是理想的,但能够恢复下载将是一个巨大的帮助。

有人可以指出在 ServiceStack 客户端中执行此操作的最佳方法吗?我发现的大多数示例仅适用于普通的 Web 客户端,并且非常古老,因此想看看使用 dotnet 和 mono 的更高版本以及 ServiceStack 的最佳方法是什么。

如果可能的话,一个基本的例子将是完美的。

4

1 回答 1

2

ServiceStack 支持返回的服务的部分内容响应

物理文件

return new HttpResult(new FileInfo(filePath), request.MimeType); 

记忆流

return new HttpResult(ms, "audio/mpeg");

原始文本

return new HttpResult(customText, "text/plain");

通过 ServiceStack 提供的静态文件

部分内容也可用于直接通过 ServiceStack 提供的静态文件下载,它可以让您流式传输 mp3 下载,或者您是否想要静态 .html、.css、.js 等。

Http 实用程序

有关如何使用ServiceStack 的内置 HTTP Utils请求部分下载的示例,请参阅PartialContentResultTests.cs

于 2014-05-08T22:06:36.277 回答