我正在考虑编写一个能够上传和流式传输大型视频文件(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工具。
任何人都可以在这里指出我正确的方向......或者你认为这是一种方法吗?想法,链接?应该是伟大的......
答案 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引发的一些异常