有没有办法将文件上传到 WCF Web API 端点?如果是这样,我如何访问网络流来读取数据?
很感谢任何形式的帮助。
谢谢。
假设您在客户端谈论:
一种方法是创建一个派生自 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
此答案仅旨在使用 Web API 预览 6 添加一些详细信息。
TransferMode
并MaxRecievedMessageSize
通过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));
我喜欢!