Angular Http PUT не отправляет запрос в веб-API

У меня есть веб-API C# с использованием Entity Framework - я пытаюсь сделать запрос на размещение через свой угловой интерфейс, чтобы имитировать функцию проверки, но запрос не проходит.

Вот мой метод веб-API

   [HttpPut("checkin/{id}")]
    [AuthorizeRoles(Role.Administrator, Role.User)]
    public async Task<IActionResult> CheckIn(int id)
    {
        var reservation = await context.Reservations.FindAsync(id);
        var username = User.Identity.Name;

        if (reservation == null)
            return NotFound();

        // Ensure user is checking-in their own reservation and its not already checked-in
        if (reservation.UserName == username && reservation.CheckInDate == null)
        {
            reservation.CheckInDate = DateTime.Now;

            var count = await context.SaveChangesAsync();

            if (count < 1)
                return StatusCode((int)HttpStatusCode.InternalServerError);
        }

        return Ok();
    }

Вот мои два файла .ts, в которых инициируется запрос -Примечание: во втором методе я решил передать идентификатор вручную для целей тестирования

-checkIn(id: number){
    if (confirm('Would you like to check in')) {
     this.reservationService.checki(7);
    };
  }

Bookingservice.ts

 checki(id: number) {
    const headers = new Headers();
    const url = `${this.url}+/checkin/${7}`;
    return this.http
             .put(url, JSON.stringify(7), {headers: headers})
             .map(res => res.json());
  }

Недавно была аналогичная проблема с запросами PUT на сервере. Оказалось, что WebDAV перехватывает запрос и вообще изводит себя. gavincoates.com/Archive/2016/07/…

Steve Py 14.06.2018 01:13
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
1 770
1

Ответы 1

С клиентом Angular HTTP все запросы Http являются Observables, что означает, что вам нужно подписаться на них, чтобы они вызывались.

Итак, в вашей функции проверки вам необходимо сделать следующее:

-checkIn(id: number){
  if (confirm('Would you like to check in')) {
   this.reservationService.checki(7).subscribe(res => {});
  };
}

Нет необходимости явно обрабатывать ответ.

Что касается бэкэнда, обрабатывающего put, я бы посмотрел на этот ответ, я ни в коем случае не эксперт по C#. https://stackoverflow.com/a/32835329/8350917

Я внес указанное изменение, и запрос больше не зависает - однако я не верю, что метод был выполнен, потому что мой DbContext все тот же - я опубликовал свой полный метод веб-api checkIn. Я был бы признателен, если бы вы могли проверить это

rahulchawla 13.06.2018 20:19

Другие вопросы по теме