将表单POST HTTP请求(Content-Type: application/x-www-form-urlencoded)发送到以下控制器将导致 HTTP 415不支持的媒体类型响应.
Sending a form POST HTTP request (Content-Type: application/x-www-form-urlencoded) to the below controller results into a HTTP 415 Unsupported Media Type response.
public class MyController : Controller { [HttpPost] public async Task<IActionResult> Submit([FromBody] MyModel model) { //... } }表单发布HTTP标头:
Form post HTTP headers:
POST /submit HTTP/1.1 Host: example:1337 Connection: keep-alive Content-Length: 219 Pragma: no-cache Cache-Control: no-cache Origin: example:1337 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Content-Type: application/x-www-form-urlencoded Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: example:1337/submit Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.8,nl;q=0.6这曾经与.NET 4.6上的ASP.NET MVC 5一起使用.
This used to work with ASP.NET MVC 5 on .NET 4.6.
推荐答案对于表单,请使用 [FromForm] 属性而不是[FromBody]属性.
For forms, use the [FromForm] attribute instead of the [FromBody] attribute.
以下控制器可与ASP.NET Core 1.1配合使用:
The below controller works with ASP.NET Core 1.1:
public class MyController : Controller { [HttpPost] public async Task<IActionResult> Submit([FromForm] MyModel model) { //... } }注意:如果控制器用[ApiController]注释,则需要[FromXxx].对于普通视图控制器,可以将其省略.
Note: [FromXxx] is required if your controller is annotated with [ApiController]. For normal view controllers it can be omitted.
更多推荐
ASP.NET Core表单POST导致HTTP 415不支持的媒体类型响应
发布评论