Angular Web Api 2不适用于POST:405方法不允许

时间:2019-05-18 12:56:21

标签: asp.net angular asp.net-web-api2

我将Angularasp.net Api 2一起使用,但是post方法不能与Angular一起使用,虽然它可以与Postman一起正常工作,并且我将HttpInterceptor用于用户令牌。

用户服务

saveUser(user: Users) {
    const body: Users = {
      userName: user.userName,
      userPassword: user.userPassword,
      userEmail: user.userEmail,
      userFullname: user.userFullname,
      userFirstname:user.userFullname,
      userLastname:user.userFullname,
      userType:user.userType,
      userPhone :user.userPhone,
      userBio :user.userBio
    }

    return this.http.post(this.rootUrl + '/api/Users/saveUser', body);
  }

请求截图 enter image description here

错误屏幕截图 enter image description here

Api代码

[Route("api/Users/saveUsers")]
[ResponseType(typeof(User))]
public IHttpActionResult PostUser([FromBody] User user)
{
  db.Users.Add(user);
  db.SaveChanges();
  return CreatedAtRoute("DefaultApi", new { id = user.UserID }, user);
}

1 个答案:

答案 0 :(得分:3)

我发现您提出请求时的API网址错误

localhost:57286//api/Users/saveUsers 

所以您应该将代码更改为

  return this.http.post(this.rootUrl + 'api/Users/saveUsers', body);

在您的控制器中,您应该具有这样的HttpPost

如果您使用的是ASP.Net,则必须更改为此内容

[HttpPost)]
[Route("api/Users/saveUsers")]
[ResponseType(typeof(User))]

在ASP.Net Core中

[HttpPost("api/Users/saveUsers")]
[ResponseType(typeof(User))]

因此您可以删除Route并替换为HttpPost

如果您仍有问题,请告诉我