首页 > 解决方案 > asp.net core web api不支持的媒体类型错误

问题描述

当我发送 POST 请求时,我收到此错误:

{
  "type" : "https://tools.ietf.org/html/rfc7231#section-6.5.13",
  "title" : "Unsupported Media Type",
  "status" : 415,
  "traceId" : "|3866e04e-4b62c808bec91a8c."
}

模型类

namespace WebApi.Models
{
    public class User
    {
        public string Username { get; set; }
        public string Password { get; set; }
    }
}

控制器

using System;
using Microsoft.AspNetCore.Mvc;
using WebApi.Models;
    
namespace WebApi
{
    [ApiController]
    [Route("/")]
    public class HomeController : Controller
    {
        [HttpGet]
        public IActionResult Get()
        {
            return View("Index");
        }

        [HttpPost]
        public void Post(User user)
        {
            Console.WriteLine(user.Username);
            Console.WriteLine(user.Password);
        }
    }
}

和 .cshtml 文件:

<form method="post">
    Username: <input type="text" asp-for="Username"/><br>
    Password: <input type="password" asp-for="Password"/><br>
    <input type="submit" value="SEND POST REQUEST">
</form>

标签: asp.net-coreasp.net-core-webapi

解决方案


因为您的控制器是 apicontroller,默认情况下它会获取 json 数据,但是您发送的是表单数据,因此您需要通过向[FromForm]您的操作添加属性来指定源:

[HttpPost]
public void Post([FromForm]User user)
{
    Console.WriteLine(user.Username);
    Console.WriteLine(user.Password);
}

结果: 在此处输入图像描述


推荐阅读