Ответ на ошибку 502 неверный шлюз не похож на традиционную ошибку 500, которая в основном является проблемой кода, это даже затрудняет устранение основной причины.
По сути, код ответа сервера HTTP 502 Bad Gateway с ошибкой указывает, что веб-сервер (IIS в нашем сценарии), выступая в качестве шлюза или прокси, получил недопустимый ответ от вышестоящего сервера. Это может произойти по нескольким причинам - например, из-за невозможности подключения к вышестоящему серверу, отсутствия ответа от восходящего сервера или из-за слишком долгого ожидания ответа от восходящего сервера (тайм-аут). В результате сервер, который действует как шлюз или прокси, сообщит об этом как о состоянии 502. Причина, по которой 502 трудно устранить, заключается в том, что основная причина может сильно различаться и будет зависеть от реальной инфраструктуры приложения, например как Asp.Net, PHP, Java и т. д.
Как мы знаем, для приложения ASP.NET Core для размещения приложения в IIS нам необходимо установить AspNetCoreModule. На самом деле это собственный модуль в IIS, действующий как обратный прокси для приложения ядра dotnet, поэтому мы можем столкнуться с ошибкой 502 для приложения ASP.NET Core.
Хотя ошибка 502 также может быть вызвана проблемой базовой платформы, такой как проблема с диском / хранилищем, в большинстве случаев нам нужно сосредоточиться на компонентах, работающих на вышестоящем сервере (основная причина), и журнал IIS предоставит нам информацию о том, как сузить вниз по вопросу.
Теперь предположим, что при доступе к приложению ASP.Net Core возникает ошибка 502, код вспомогательного состояния может оказаться недостаточно полезным. Во-первых, мы можем проверить журнал IIS и проверить основную причину с помощью кода sc-win32-status. В качестве альтернативы мы можем включить отслеживание неудачных запросов, чтобы узнать более подробную информацию.
Вышеупомянутый журнал дает нам две информации об импорте, ошибка исходит от AspNetCoreModule, а код ошибки - 2147954402. Это означает, что ошибка 502 вызвана AspNetCoreModule, и, вероятно, он получил недопустимый ответ. Кроме того, мы можем использовать либо утилиту err, либо посетить http://errors/, чтобы выяснить, что 2147954402 - это просто WININET_E_TIMEOUT. По умолчанию время ожидания запроса ASP.NET Core составляет 2 минуты, и мы можем изменить его с помощью requestTimeout в файле настроек. Дополнительные сведения о конфигурации ASP.NET Core см. В справочнике по настройке модуля ASP.NET Core.
Также я прошу вас ознакомиться с руководством по устранению неполадок приложения asp.net core 2.2.
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-apps/troubleshoot?view=aspnetcore-2.2
Надеюсь, это поможет.
person
Mohit Verma
schedule
10.05.2019