2

背景:

  • .net 核心 2.2 网络应用程序
  • 使用Azure ARM在 Azure Web 应用中部署
  • 不涉及数据库。该应用程序正在尝试从 keyvault 读取一些信息。

问题重现步骤

  • 应用程序在本地工作
  • 使用 Azure ARM 部署应用
  • 成功部署后,导航到 Web 应用程序会导致 502 和 500 错误。我附上了截图。在此处输入图像描述

到目前为止我尝试过的

  • 打开诊断日志- 我没有发现任何有趣的东西。
  • 我已经尝试过这个和其他几个 SO 答案 - 不走运
  • 重新启动网络应用程序也无济于事。但是,只要我更改任何 azure app 应用程序设置,该应用程序就会开始工作- 即使将 WEBSITE_HTTPLOGGING_RETENTION_DAYS 的值从 2 更改为 5 也会使应用程序运行。

请告知如何解决此错误?

4

1 回答 1

1

502 bad gateway error response 不像传统的 500 错误,主要是代码问题,这使得解决根本原因变得更加困难

基本上,HTTP 502 Bad Gateway 服务器错误响应代码表明 Web 服务器(在我们的场景中为 IIS)在充当网关或代理时,从上游服务器接收到无效响应。这可能由于多种原因而发生 - 例如,无法连接到上游服务器,上游服务器没有响应,或者上游服务器响应时间过长(超时)。结果,充当网关或代理的服务器将报告为 502 状态。 502 难以排除故障的原因是根本原因可能有很大差异,并且取决于实际的应用程序框架,例如如 Asp.Net、PHP、Java 等。

对于 ASP.NET Core 应用程序,我们知道,为了在 IIS 中托管应用程序,我们需要安装 AspNetCoreModule。它实际上是 IIS 中的本机模块,充当 dotnet Core 应用程序的反向代理,这就是为什么我们可能会遇到 ASP.NET Core 应用程序的 502 错误。

虽然 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 Module 配置参考。

另外,我会要求您阅读 asp.net core 2.2 应用程序的故障排除指南。

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

希望能帮助到你。

于 2019-05-10T12:56:36.270 回答