首页 > 解决方案 > Azure Webapp 请求在 4 分钟后返回 502

问题描述

我知道以前有人问过这个问题,但是我尝试了所有已知的解决方案,但仍然没有运气。我有一个返回大约 26MB 的 JSON 的请求。它在我的 azure web 应用程序上返回 502。我已将 maxRequestLength 和 maxAllowedContentLength 设置为它们的最大允许值,详见此处。

如何在 IIS7 上运行时将 maxAllowedContentLength 设置为 500MB?

我还在我的 webapp 的站点文件夹中设置了 applicationHost.xdt,并验证了它是否已按照此处的详细信息应用。

Azure Web 应用中的 ApplicationHost.xdt

尽管如此,我的请求每次都恰好是 4 分钟超时。我可以对在 iisexpress 上运行的 localhost 运行相同的请求,指向 Azure SQL 数据库并返回数据,所以我知道这是 azure webapp 特有的。

我在我的 webapp 的“应用服务日志”部分启用了所有类型的日志记录。当会话过期时,我看到 401 的其他失败请求跟踪,但此请求未记录失败的请求跟踪或应用程序错误。在实时日志流中,它将请求显示为 Web 服务器日志中的 200 响应。

还有其他想法吗?

标签: azureazure-web-app-servicebad-gatewaymaxrequestlength

解决方案


感谢您提出详细的问题并分享您已经尝试过的解决方案。我不确定您的 WebApp 上是否打开了“始终开启”功能。由于这个原因可能会发生这种超时错误,所以请启用它并让我们知道以进行进一步调查。

附加信息,Azure 负载均衡器的默认空闲超时设置约为四分钟(230 秒);这是一个一般的空闲请求超时,将导致客户端在 230 秒后断开连接。但是,此后该命令仍将继续在服务器端运行。对于典型场景,这通常是 Web 请求的合理响应时间限制。在这种情况下,您可以查看异步方法来运行其他报告。WebJobs 或 Azure Functions 是另一种选择。

如果“始终开启”配置未开启,请务必开启。即使没有流量,AlwaysOn 也会帮助保持应用程序加载,它会向应用程序的 ROOT 发送请求。向 / 发出请求时交付的任何文件都是将被预热的文件,此功能随应用服务计划提供,不单独收费

1) 从 Azure 门户,转到您的 WebApp。

2) 选择设置 > 配置 > 常规设置。

3) 对于始终开启,选择开启。


推荐阅读