asp.net 核心 2.2 托管文件导致 http/415 不支持的媒体类型

asp.net core 2.2 posting file results in http/415 unsopported mediatype

来自 postman 我正在尝试 post 一个文件到 asp.net core 2.2 api-controller.

POST /api/epd/noshow/uploadfile HTTP/1.1
Host: localhost:44361
User-Agent: PostmanRuntime/7.11.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 3d633228-2554-442b-84f4-4e8214972886,a8f994f4-973e-411f-b96b-778af2c082b4
Host: localhost:44361
accept-encoding: gzip, deflate
content-type: multipart/form-data; boundary=--------------------------201375848683546790642901
content-length: 237
Connection: keep-alive
cache-control: no-cache
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW


Content-Disposition: form-data; name="file"; filename="C:\temp\caldr.json


------WebKitFormBoundary7MA4YWxkTrZu0gW--

api-控制器方法

[HttpPost]
[AllowAnonymous]
public IActionResult UploadFile([FromForm]IFormFile file)
{
    return Ok();
}

我已经尝试过FromForm,FromBody,什么都没有。在 postman 中设置内容类型,在 postman 中不设置内容类型总是 returns 相同的错误。

有什么建议吗?

这比预期的要简单 :) 您以表单数据的形式发送请求正文。此处,此示例仅显示了使用 ASp.NET Core 2.2 - WebAapi

调用的简单文件 post

邮递员:

API:

找到问题和解决方法。仅供其他人遇到同样令人难以置信的问题时参考。

在controller的'grandmother' class上,有如下属性:

[Consumes("application/json")]

当然form-data没有被接受:-)

通过将以下属性添加到操作来覆盖此默认行为

[Consumes("multipart/form-data")]