1

我正在尝试本文第 2 部分中的代码:文件上传和多部分 MIME

它基本上是执行异步读取的 webapi 任务的表单帖子

 await Request.Content.ReadAsMultipartAsync(provider);

为了避免完全上传缓冲和过多的内存使用,我还提出了这篇文章在 ASP.NET Web API 中处理大文件的建议

它建议创建

   public class NoBufferPolicySelector : WebHostBufferPolicySelector 

和配置

  GlobalConfiguration.Configuration.Services.Replace
  (typeof(IHostBufferPolicySelector), new NoBufferPolicySelector());

但是,当我在另一台机器上测试使用 IE 和 Firefox 上传两个 1G 文件时,没有 NoBufferPolicySelector,它们使用了大约 90M 的内存。有,大约180M。

这就是全部?这是否意味着 WebApi2 已经内置了内存缓冲区控制?是否需要额外的策略选择器代码?谢谢

4

1 回答 1

-1

StreamContent 没有根据“那个家伙”缓冲

public class WebHostBufferPolicySelector 
  : IHostBufferPolicySelector
{
   ......

 public virtual bool UseBufferedOutputStream
      (HttpResponseMessage response)
 {
      return !(content is StreamContent 
            || content is PushStreamContent);
于 2013-10-29T21:00:00.880 回答