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

标签 c# wcf json large-file-upload

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

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

最佳答案

如果你想上传大文件,你肯定需要查看WCF Streaming Mode .

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

使用流式传输,您可以定义单向流式传输(仅用于上传,仅用于下载)或双向流式传输。这是通过将绑定(bind)的传输模式设置为 StreamedRequestStreamedResponse 或只是简单的 Streamed 来完成的。

<bindings>
   <basicHttpBinding>
      <binding name="HttpStreaming" 
               maxReceivedMessageSize="2000000"
               transferMode="StreamedRequest"/>
   </basicHttpBinding>
</bindings>

然后您需要有一个服务契约(Contract),该契约(Contract)要么接收类型为 Stream 的参数(用于上传),要么返回类型为 Stream 的值(用于下载)。

[ServiceContract]
public interface IFileUpload
{
    [OperationContract]
    bool UploadFile(Stream stream);
}

应该可以了!

关于c# - 如何通过 WCF 处理大文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935040/

相关文章:

wcf - WCF:配置已知类型

Jquery (JSON) - 如何阅读 Twitter 趋势词?

Java - Google GSON 语法错误

c# - 尝试将 sessionState 存储在 Windows Azure Web 服务的 AppFabricCache 中时引发 SocketException

c# - 序列化数据成员(名称)覆盖问题

c# - 在 C# 中,为什么我不能传递另一个类的 EventHandler 引用,我该如何绕过它?

.net - ChannelFactory 在端点上没有地址,为什么?

c# - 在 C# 中读/写文本文件进度条

c# - WCF ServiceHost.Close() 延迟

javascript - getJSON 不返回任何内容