为什么在Web api HttpPost方法中使用[FromBody]属性时会得到405 Unsopported媒体类型?

时间:2019-08-16 13:53:17

标签: c# asp.net-web-api .net-core

当我在Web api方法中使用[FromBody]属性时,我无法从邮递员调用api,并且当我致电时,我会收到状态:415不支持的媒体类型错误。但是,如果我删除该属性,则可以使用post man调用api,但是发送给api的参数为空。

我搜索了我的错误,但没有找到正确的答案。我删除了属性,但没有在参数中填充数据

public async Task<IActionResult> Register([FromBody] UserDto userDto)
{
...
}

Microsoft.AspNetCore.Mvc.StatusCodeResult:信息:执行HttpStatusCodeResult,设置HTTP状态代码415 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:Information:在146.5064毫秒内执行了操作DatingSite.Controllers.AuthController.Register(DatingSite)

 public async Task<IActionResult> Register([FromBody] UserDto userDto)
    {
        if(!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        if(await _repo.UserExist(userDto.Username))
        {
            return BadRequest("user name is used before");
        }

        User newUser=new User{
            UserName=userDto.Username
        };
        var createdUser=await _repo.Register(newUser,userDto.Password);
        return StatusCode(201);
    }

我和邮递员一起寄了这封信,里面有空伙伴,但是我尝试了与原始数据这样的伙伴:  http://localhost:5000/api/auth/register { “用户名”:“ someUser”, “ password”:“ somePassword” }

enter image description here

我正在使用post方法。 {“ username”:“ someUserName”,“ password”:“ somePassword”}

public class UserDto
{
    [Required]
    public string Username { get; set; }
    [Required]
    [StringLength(8,MinimumLength=4)]
    public string Password { get; set; }
}

1 个答案:

答案 0 :(得分:0)

为内容添加标题,请参见下文

enter image description here