Webapi异步上传,缓冲和内存使用

时间:2013-10-29 02:31:06

标签: file-upload asynchronous asp.net-web-api buffer

我正在尝试本文中的代码Part 2: File Upload and Multipart MIME

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

 await Request.Content.ReadAsMultipartAsync(provider);

为了避免完全上传缓冲和过多的内存使用,我还提出了本文的建议Dealing with large files in ASP.NET Web API

建议创建

   public class NoBufferPolicySelector : WebHostBufferPolicySelector 

和配置

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

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

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

1 个答案:

答案 0 :(得分:-1)

根据"the guy"

未缓冲StreamContent
public class WebHostBufferPolicySelector 
  : IHostBufferPolicySelector
{
   ......

 public virtual bool UseBufferedOutputStream
      (HttpResponseMessage response)
 {
      return !(content is StreamContent 
            || content is PushStreamContent);