asp.net-core - 状态 415 不支持的媒体类型表单数据
问题描述
我正在尝试使用来自 Body 的表单数据从 PostMan 的 API 控制器调用 Post 方法。但是从邮递员点击发送按钮后,显示错误消息“不支持的媒体类型”
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
"title": "Unsupported Media Type",
"status": 415,
"traceId": "|cd267e9d-4f557653ef6391ef."
}
这是代码。模型类
public class PersonCreationDTO
{
[Required]
[StringLength(120)]
public string PersonName { get; set; }
public string Biography { get; set; }
public DateTime DateOfBirth { get; set; }
public IFormFile Picture { get; set; }
}
public class Person
{
public int Id { get; set; }
[Required]
[StringLength(120)]
public string PersonName { get; set; }
public string Biography { get; set; }
public DateTime DateOfBirth { get; set; }
public string Picture { get; set; }
}
控制器
[ApiController]
[Route("api/people")]
public class PeopleController:ControllerBase
{
private readonly ApplicationDbContext context;
private readonly IMapper mapper;
public PeopleController(ApplicationDbContext context, IMapper mapper)
{
this.context = context;
this.mapper = mapper;
}
[HttpPost]
public async Task<ActionResult> Post([FromBody] PersonCreationDTO personCreation)
{
var person = mapper.Map<Person>(personCreation);
context.Add(person);
//await context.SaveChangesAsync();
//var personDTO = mapper.Map<PersonDTO>(person);
//return new CreatedAtRouteResult("getPerson", new { Id = personDTO.Id }, personDTO);
return NoContent();
}
}
解决方案
添加[FromForm]
而不是[FromBody]
[HttpPost]
public async Task<ActionResult> Post([FromForm] PersonCreationDTO personCreation)
{
//clarify code
}
推荐阅读
- python - 如何使用 Elasticsearch 按@timestamp 对分页日志进行排序?
- kotlin - Kotlin 中的 min 和 minOf 有什么区别?
- apache - 域后的 URL 重写和双斜杠:如何使其成为单斜杠?
- bash - gitlab runner 最后抛出“清理基于文件的变量 00:01 错误:作业失败:退出代码 1”
- python - 使用 psycopg2 对多组参数执行查询
- java - 尝试创建 RequestSpecBuilder 对象时出现 NoSuchMethodException
- android - Fastlane 分发失败并出现错误“应用程序分发找不到您的应用程序”
- vb.net - 如何使用 Visual Studio VB.NET 计算 Access 数据库中的值
- javascript - 使用 axios 在没有网络的情况下在 React 应用程序上工作
- c++ - 为什么 libstdc++ 两者都实现
和 迭代器上的二元运算符重载?