У нас есть несколько API, которые долго опрашиваются через Azure API Management. По какой-то причине мы получаем ответ 200 [not sent in full (see exception telemetries)], а затем исключение System.Exception: A task was canceled. в App Insights.

Взглянув на телеметрию службы серверных приложений, можно сказать, что запросы выполнялись без каких-либо исключений.

Может ли кто-нибудь помочь мне понять, что означает этот статусный ответ и почему мы получаем это исключение?

enter image description here

1
Pratik 24 Фев 2021 в 11:17

1 ответ

Лучший ответ

Эти ошибки означают, что APIM начал отправлять ответ клиенту, отправил код состояния и описание, а также некоторую часть заголовков и тела. Эти трассировки должны сопровождаться телеметрией исключений, как предполагает код ответа. В зависимости от того, что вы видите, это может быть:

  • Ошибка подключения клиента - клиент прервал подключение до того, как ответ был отправлен полностью
  • Ошибка соединения с сервером - соединение с сервером прервано до предоставления полного ответа

Причины того и другого могут быть разными, но, учитывая небольшую продолжительность, я подозреваю, что это закрытие клиентского соединения. Одна из причин этого, например, заключается в том, что если этот API используется из браузера, браузер обычно прерывает соединение и прерывает чтение ответа, если пользователь уходит со страницы, сделавшей вызов.

1
Vitaliy Kurokhtin 25 Фев 2021 в 05:41