上传文件WCF Web API端点

时间:2011-05-30 13:46:07

标签: file-upload wcf-web-api

有没有办法将文件上传到WCF Web API端点?如果是这样,我如何访问网络流来读取数据?

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:4)

假设您正在谈论客户端:

一种方法是创建一个派生自HttpContent的FileContent类。在覆盖中,当HTTPClient准备好接收流时,您将获得NetworkStream。

如果您询问服务器端,那么您只需获取HTTPRequestMessage并访问httpRequestMessage.Content.ContentReadStream属性。


<强>更新

默认情况下,WCF传输仅限于以65K发送消息。如果你想发送更大的内容,你需要启用“流传输模式”,你需要增加MaxReceivedMessageSize的大小,这就是一个防范,以防止有人通过上传大量文件来杀死你的服务器。

因此,您可以使用绑定配置执行此操作,也可以在代码中执行此操作。这是在代码中执行此操作的一种方法:

var endpoint = ((HttpEndpoint)host.Description.Endpoints[0]);  //Assuming one endpoint
endpoint.TransferMode = TransferMode.Streamed;
endpoint.MaxReceivedMessageSize = 1024 * 1024 * 10;  // Allow files up to 10MB

答案 1 :(得分:2)

此答案仅用于在Web API预览6中添加一些详细信息。

TransferModeMaxRecievedMessageSize是通过WebApiConfigurationClass新曝光的。

var builder = new WebApiConfiguration();
builder.TransferMode = TransferMode.Streamed;
builder.MaxReceivedMessageSize = 1024 * 1024 * 10;

var serviceRoute = new WebApiRoute(route, new WebAPIServiceHostFactory() { Configuration = builder }, typeof(MyService));

我喜欢它!