如何通过WCF处理大文件上传?

esa*_*sac 16 c# wcf json large-file-upload

我正在考虑使用WCF进行一个项目,该项目需要人们能够将大文件(64MB-1GB)上传到我的服务器.我如何使用WCF处理此问题,可能还能恢复上传.

为了处理更大的客户群,我想通过WCF测试JSON.这将如何影响文件上传?可以从JSON完成,还是需要切换到上传部分的REST?

mar*_*c_s 19

如果你想上传大文件,你肯定需要研究WCF流模式.

基本上,您可以更改绑定的传输模式; 默认情况下,它是缓冲的,即整个消息需要在发送方缓冲,序列化,然后作为一个整体传输.

使用Streaming,您可以定义单向流(仅用于上载,仅用于下载)或双向流.这是通过设置您的结合的transferMode做StreamedRequest,StreamedResponse或只是普通的Streamed.

<bindings>
   <basicHttpBinding>
      <binding name="HttpStreaming" 
               maxReceivedMessageSize="2000000"
               transferMode="StreamedRequest"/>
   </basicHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

然后你需要有一个服务合同,它接收一个类型的参数Stream(用于上传),或者返回一个类型的值Stream(用于下载).

[ServiceContract]
public interface IFileUpload
{
    [OperationContract]
    bool UploadFile(Stream stream);
}
Run Code Online (Sandbox Code Playgroud)

应该这样做!