从控制台应用程序接收文件时,IFormFile始终为null

Jos*_*a I 2 .net c# asp.net-web-api2 .net-core asp.net-core-webapi-2.1

我已经准备好WebApi方法来接受文件,如下所示:(例如uri“ https:// localhost:44397 / api / uploadfile

 [Route("api/[controller]")]
 [ApiController]
 public class UploadFileController : ControllerBase
 {
    [HttpPost]
    public async Task<IActionResult> Post([FromForm] IFormFile file)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用控制台应用程序将文件发送到此api方法,以下是我的代码:

    public static void Send(string fileName)
    {
        using (var client = new HttpClient())
        using (var content = new MultipartFormDataContent())
        {
            client.BaseAddress = new Uri("https://localhost:44397");
            var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            var index = fileName.LastIndexOf(@"\");
            var fn = fileName.Substring(index + 1);
            fs.Position = 0;

            var contentfile = new StreamContent(fs);
            content.Add(contentfile, "file", fn);
            var result = client.PostAsync("/api/uploadfile", content).Result;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我还与其他客户端(例如,邮递员)进行了检查,并且它也在那里失败了(因此,这似乎是服务器端而不是控制台应用程序中的问题)。

不知道我在这里做错了什么。每当我检查WebApi方法文件参数始终为null时。

谁能帮我找到解决方案。我尝试搜索博客,但无济于事。我可能在这里做些天真。任何帮助,不胜感激。

Jos*_*a I 5

最后,我使它工作。它必须是Microsoft中的错误,否则它们可能会从ApiController的.net core 2.1更改工作方式。

我将我的WebApi方法更改为以下方法,并确保它有效。

注意:删除了ApiController并正常工作。Microsoft应该对此进行记录。

[Route("api/[controller]")]
public class OCRController : ControllerBase
 {
    [HttpPost]
    public async Task<IActionResult> Post([FromForm] IFormFile file)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

它可以帮助像我这样挣扎的人。