宁静的WCF数据服务来上传和下载大文件?

时间:2010-04-29 09:49:33

标签: asp.net-mvc wcf sql-server-2008 filestream wcf-data-services

我正在考虑编写一个能够上传和流式传输大型视频文件(GB)的宁静服务(将来它可能不仅仅是视频,也可能是大型文档。

到目前为止我研究过,对我来说真正有用的可能是使用off:

WCF数据服务和实现IDataServiceStreamProvider在后​​端我想使用新的SQL Type FILESTREAM将大文件Strore到SQL SERVER 2008中。看起来我也不得不使用一些Win 32 API访问文件系统SafeFileHandle handle = SqlNativeClient.OpenSqlFilestream

由于WCF数据服务喜欢使用可以作为流实现的实体框架或Linq-To-SQL,并且是否支持SQL Server文件流类型?

这是计划,但我不知道如何将它组合在一起......我想知道如何组合大文件并能够恢复和取消。

上传:我不确定使用silverlight上传控件还是其他一些漂亮的ajax工具。

任何人都可以在这里指出我正确的方向......或者你认为这是一种方法吗?想法,链接?应该是伟大的......

3 个答案:

答案 0 :(得分:0)

我做了一些我发送大量数据文件的地方。我用这两个例子来帮助编写我的代码

http://msdn.microsoft.com/en-us/library/ms751463.aspx

http://www.codeproject.com/KB/WCF/WCFDownloadUploadService.aspx

这是一个非常重要的数字,知道2147483647

答案 1 :(得分:0)

silverfighter: 仅在IIS6上,我无法将WCF数据服务配置为通过网络发送超过30 MB的流。我相信它不是为大型流交易而构建的。只要尝试上传一个27 MB的文件并监控相关的w3wp进程,您就会对所消耗的内存量感到惊讶。

解决方案是创建一个在其自己的w3wp进程下托管的WCF服务应用程序,并且仅负责通过WCF下载/上载。我建议您使用以下项目http://www.codeproject.com/Articles/166763/WCF-Streaming-Upload-Download-Files-Over-HTTP

希望以上内容可以提供帮助。

答案 2 :(得分:0)

与问题无关,但与@Houssam Hamdan的答案有关:

30 MB的限制不是因为WCF数据服务,而是IIS的限制,可以通过配置文件和IIS的设置进行更改,并捕获IIS引发的一些异常