Angular Web Api 2 не работает с POST: метод 405 не разрешен - PullRequest
1 голос
/ 18 мая 2019

Я использую Angular с asp.net Api 2, но метод post не работает с Angular, в то время как он отлично работает с почтальоном, и я использую 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 Ответ

3 голосов
/ 18 мая 2019

Я вижу, что ваш URL-адрес 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

Пожалуйста, дайте мне знать, если у вас все еще есть проблема

...