2

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

很感谢任何形式的帮助。

谢谢。

4

2 回答 2

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
于 2011-06-10T13:05:13.537 回答
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));

我喜欢!

于 2011-12-23T11:35:26.790 回答