Ошибка тайм-аута веб-приложения Azure с ответом 500/502 - PullRequest
1 голос
/ 20 марта 2019

Фон:

  • .net core 2.2 веб-приложение
  • Развернуто в веб-приложении Azure с использованием Azure ARM
  • БД не задействована.Приложение пытается прочитать некоторую информацию из keyvault.

Выполнить шаги воспроизведения

  • Приложение работает локально
  • Развернуть приложениеиспользование Azure ARM
  • После успешного развертывания переход к веб-приложению вызывает ошибку 502 и 500.Я прикрепил скриншот. enter image description here

Что я пробовал до сих пор

  • Включено журналы диагностики - я не нашел ничего интересного.
  • Я уже попробовал этот и несколько других ответов SO - не повезло
  • Перезапуск веб-приложения нетоже не поможет.Тем не менее, приложение начинает работать, как только я изменяю настройки приложения Azure * - даже при изменении значения WEBSITE_HTTPLOGGING_RETENTION_DAYS от 2 до 5 приложение запускается.

Посоветуйте, пожалуйста, какустранить эту ошибку?

1 Ответ

0 голосов
/ 10 мая 2019

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

Как правило, код ответа об ошибке сервера HTTP 502 Bad Gateway указывает, что веб-сервер (IIS в нашем сценарии), действуя в качестве шлюза или прокси-сервера, получил неверный ответ от вышестоящего сервера. Это может произойти по нескольким причинам - например, не удалось подключиться к вышестоящему серверу, нет ответа от вышестоящего сервера, или для вышестоящего сервера потребуется слишком много времени для ответа (истекло время ожидания). В результате сервер, который действует как шлюз или прокси-сервер, сообщит об этом как о состоянии 502. Причина, по которой 502 трудно устранить, состоит в том, что основная причина может сильно варьироваться и будет зависеть от реальной среды приложения, например как Asp.Net, PHP, Java и т. д.

Для приложения ASP.NET Core, как мы знаем, для размещения приложения в IIS нам необходимо установить AspNetCoreModule. На самом деле это собственный модуль в IIS, действующий в качестве обратного прокси-сервера для основного приложения dotnet, поэтому мы можем столкнуться с ошибкой 502 для основного приложения ASP.NET.

Хотя ошибка 502 также может быть вызвана проблемой базовой платформы, такой как проблема с диском / хранилищем, в большинстве случаев нам необходимо сосредоточиться на компонентах, работающих на вышестоящем сервере (первопричина), и журнал IIS предоставит нам информацию о как сузить вопрос.

Теперь, предположим, что при обращении к приложению ASP.Net Core мы сталкиваемся с ошибкой 502, код вспомогательного статуса может оказаться недостаточно полезным. Во-первых, мы можем проверить журнал IIS и проверить основную причину по коду sc-win32-status. В качестве альтернативы, мы можем включить отслеживание невыполненных запросов для получения более подробной информации.

enter image description here

Приведенный выше журнал дает нам две информации об импорте: ошибка поступает из AspNetCoreModule, а код ошибки - 2147954402. Это означает, что ошибка 502 сгенерирована AspNetCoreModule, и, вероятно, возникла неправильная реакция. Кроме того, мы можем использовать либо утилиту err, либо посетить http://errors/, чтобы выяснить, что 2147954402 - это просто WININET_E_TIMEOUT. По умолчанию время ожидания запроса ASP.NET Core составляет 2 минуты, и мы можем изменить его с помощью requestTimeout в установочном файле. Дополнительные сведения о конфигурации ядра ASP.NET см. В справочнике по настройке модуля ядра ASP.NET.

Также я бы попросил вас просмотреть руководство по устранению неполадок приложения asp.net core 2.2.

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-apps/troubleshoot?view=aspnetcore-2.2

Надеюсь, это поможет.

...