加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 下载非常大的文件(8GB) – 结合WCF和WebClient?

发布时间:2020-12-15 17:24:37 所属栏目:百科 来源:网络整理
导读:我在创建支持下载非常大的文件的WCF服务时遇到了一些麻烦.我已经阅读了很多关于如何将transferMode属性设置为Streamed的指南,将所有messageSize和bufferSize属性增加到Int32.MaxValue,但我仍然没有运气. (我还通过MessageBodyMember属性将流作为消息体返回,
我在创建支持下载非常大的文件的WCF服务时遇到了一些麻烦.我已经阅读了很多关于如何将transferMode属性设置为Streamed的指南,将所有messageSize和bufferSize属性增加到Int32.MaxValue,但我仍然没有运气. (我还通过MessageBodyMember属性将流作为消息体返回,并使用MessageHeader属性通过标头发送元数据).

如果我设置了所有这些属性,我可以很好地下载较小的文件,但是当我尝试下载1-2GB文件时,我只是得到一个400错误的请求错误,这使得它很难调试…

理想情况下,我的服务应支持至少8GB的文件大小.这甚至可以用WCF吗? web.config文件的各种messageSize属性似乎仅限于Int32.MaxValue,它等于最大文件大小2GB.

从我的研究中我发现似乎我将不得不使用WebClient.DownloadFile.
只有具有所需权限的用户才能下载文件.使用WCF,我的下载方法可以采用服务器可以检查的令牌参数,并且仅当用户有权下载所请求的文件时才返回流.使用WebClient方法似乎并不简单.如果有人有关于如何做到这一点的指导(通过WebClient),我将非常感激.

理想情况下,我的WCF服务应该管理并提供用户令牌,并以某种方式绑定到每个单独的文件,令牌当前是合法的(令牌只能使用一次).然后应该通过WebClient进行下载.

提前感谢任何线索.

解决方法

您可以在WCF中执行此操作.许多月前,我构建了一个服务(我们的配置中没有Web服务器).我们使用WCF流:

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

The strategy to deal with large payloads is streaming. While messages,especially those expressed in XML,are commonly thought of as being relatively compact data packages,a message might be multiple gigabytes in size and resemble a continuous data stream more than a data package. When data is transferred in streaming mode instead of buffered mode,the sender makes the contents of the message body available to the recipient in the form of a stream and the message infrastructure continuously forwards the data from sender to receiver as it becomes available.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读