Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用易于单元测试的WebAPI POST实现上传文件_C#_Rest_File Upload_Asp.net Web Api - Fatal编程技术网

C# 如何使用易于单元测试的WebAPI POST实现上传文件

C# 如何使用易于单元测试的WebAPI POST实现上传文件,c#,rest,file-upload,asp.net-web-api,C#,Rest,File Upload,Asp.net Web Api,以下是我的一些想法: 1-使用HttpContext public HttpResponseMessage PostFile() { Save(HttpContext.Current.Request.Files[0]); // ... } 2-使用请求 public async Task<httpResponseMessage> PostFile() { if (Request.Content.IsMimeMultipartContent())

以下是我的一些想法:

1-使用HttpContext

public HttpResponseMessage PostFile()
{
    Save(HttpContext.Current.Request.Files[0]);
    // ...
}
2-使用请求

public async Task<httpResponseMessage> PostFile()
{
     if (Request.Content.IsMimeMultipartContent())
     {
          var provider = new MultipartFormDataStreamProvider("~/files");
          await Request.Content.ReadAsMultipartAsync(provider);
          // ...
     }
}
public异步任务PostFile()
{
if(Request.Content.IsMimeMultipartContent())
{
var provider=新的MultipartFormDataStreamProvider(“~/files”);
wait Request.Content.ReadAsMultipartAsync(提供程序);
// ...
}
}
第一,控制器依赖于HttpContext,这在单元测试时很难模拟

第二种方法还依赖于相对容易模拟的请求


使用Web API POST action方法实现文件上传的最简单方法是什么?该方法可以轻松地进行单元测试,而无需使用Moq之类的模拟框架?

理想的方法是将文件作为方法的输入参数,就像使用HttpPostedFileBase的MVC控制器一样。我想知道是否有人能解决这个问题。