Единичный запрос на указание c API завис надолго - PullRequest
0 голосов
/ 09 июля 2020

Я создал приложение API с ASP. NET Core 2.2.

Все в порядке. За исключением одного PATCH API, который принимает идентификатор и список для замены списка соответствующего элемента.

Этот API отлично работает и с POSTMAN . Просто и быстро, работает так, как ожидалось.

Однако для запуска в браузерах требуется 1 минута для отправки этого запроса.

Я попытался упростить задачу, переписав приложение внутри только одна функция jQuery, чтобы проверить, не связана ли проблема с моим веб-приложением; однако он все еще останавливается на 1 минуту.

Я просмотрел stalled, люди говорят, что это может быть политика Chrome для загрузки максимум 6 запросов одновременно; однако это не мой случай. В то время был только такой запрос, и все остальные API работали нормально, кроме этого.

Кроме того, я пробовал с другими браузерами: Firefox и Edge, но он все тот же.

Согласно статье Chrome обеспечивает:

  • Очередь . Браузер ставит запросы в очередь, когда:
    • есть запросы с более высоким приоритетом.
    • Уже открыто шесть TCP-соединений для этого источника, что является пределом. Применимо только к HTTP / 1.0 и> HTTP / 1.1.
    • Браузер на короткое время выделяет место в дисковом кэше
  • Остановлено . Запрос мог быть задержан по любой из причин, описанных в Очередь .

Кажется, что длительное «застревание» означает, что запрос не был событием послал. Означает ли это, что я могу просто исключить возможность исправления серверного API?

А также, поскольку в то же время нет другого запроса, означает ли это, что, скорее всего, это связано с тем, что " Браузер на короткое время выделяет место в дисковом кеше", или есть какая-то другая причина?

И я также удивляюсь, почему только этот API вызывает эту проблему. Есть ли что-то особенное в методе " PATCH "?

1 Ответ

0 голосов
/ 09 июля 2020

Сначала используйте секундомер и оцените время отклика вашего кода в браузере и почтальоне и посмотрите, сколько времени займет каждый из них. Если оба одинаковые, не трогайте свой код, потому что проблема не в вашем методе. Если можете, протестируйте его с помощью «post http attribute», пока не узнаете, в чем причина вашей проблемы. Однако я предполагаю, что причина в вашей системе. Конечно, возможно решение проблемы с изменением конвейера (startup.cs). Также существуют проблемы, подобные CORS, которые возникают только в браузерах, а не в почтальоне.

...