c# - Angular Web Api 2 不适用于 POST : 405 Method Not Allowed

标签 c# angular typescript asp.net-core asp.net-core-mvc

我将 Angularasp.net Api 2 一起使用,但 post 方法无法与 Angular 一起使用,而它与 Postman 一起工作正常,我正在使用 HttpInterceptor 用于用户 token 。

用户服务

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);
}

最佳答案

我看到你请求时的API url是错误的

localhost:57286//api/Users/saveUsers 

所以你应该把你的代码改成

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

在你的 Controller 中你应该有这样的 HttpPost

如果您使用的是 ASP.Net,则必须更改为这个

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

在 ASP.Net Core 中

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

所以你可以删除 Route 并替换为 HttpPost

如果还有问题请告诉我

关于c# - Angular Web Api 2 不适用于 POST : 405 Method Not Allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199149/

相关文章:

c# - Bing map 与 C# 和 MVVM 信息框和图钉绑定(bind)

c# - 收集崩溃数据的最佳方法是什么?

javascript - 获取请求未满足 Angular-Express

angular - 如何在 Angular 中读取当前 PWA 的版本哈希?

javascript - typescript 和 d3 版本 v3 中的可折叠树

c# - XAML 中的 Bindingerror 和 UWP 中的 MVVM(使用 C#)

c# - Xamarin iOS - 如何发送电子邮件

Angular CLI 在库构建中包含样式表 scss 文件

Angular 4/5 - 路线 paramMap 与 params

javascript - 如何在 Angular 上监听 ag-Grid 的 sortChange(event)?