如何使用WCF从客户端向服务器发送大文件?

Cha*_*ran 5 c# wcf stream large-files

如何在C#中使用WCF从客户端向服务器发送大文件?在配置代码下面.

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="HttpStreaming_IStreamingSample" 
                         maxReceivedMessageSize="67108864"
                          transferMode="Streamed">
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint 
            address="http://localhost:4127/StreamingSample.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="HttpStreaming_IStreamingSample"
            contract="StreamingSample.IStreamingSample" 
            name="HttpStreaming_IStreamingSample" />
    </client>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

mar*_*c_s 6

正如Dzmitry已经指出的那样,你需要检查流媒体.

为了能够将大型文件作为流发送到您的服务,您需要:

  • 创建一个接受a Stream作为其输入参数的服务方法
  • 创建一个使用的绑定配置(在服务器和客户端上) transferMode=StreamedRequest
  • 在您的客户端中创建一个流并将其发送到服务方法

首先,您需要在服务合同中使用一种方法:

[ServiceContract]
interface IYourFileService
{
   [OperationContract]
   void UploadFile(Stream file)
}
Run Code Online (Sandbox Code Playgroud)

然后你需要一个绑定配置:

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

以及使用该绑定配置的服务上的服务端点:

<services>
  <service name="FileUploadService">
     <endpoint name="UploadEndpoint"
               address="......."
               binding="basicHttpBinding"
               bindingConfiguration="FileUploadConfig"
               contract="IYourFileService" />
  </service>
</services>
Run Code Online (Sandbox Code Playgroud)

然后,在您的客户端中,您需要打开例如文件流并将其发送到服务方法而不关闭它.

希望有所帮助!


Dzm*_*uba 2

您可以查看WCF Streaming功能。