ASP.Net 请求引发 502 Bad Gateway 或 TimeOut

Posted

技术标签:

【中文标题】ASP.Net 请求引发 502 Bad Gateway 或 TimeOut【英文标题】:ASP.Net request raises 502 Bad Gateway or TimeOut 【发布时间】:2013-08-04 00:03:24 【问题描述】:

我有一个在 IIS7 上运行的 C# ASP.NET Webforms 网站。它是一个报表创建应用程序,用于查询 SQL Server 数据库、获取数据、将其解析为 Excel 文档。

查询本身不会花费太长时间,但当查询非常大(50,000 行)时,写入 Excel 需要一段时间。

现在的问题是,当我运行报告应用程序时,我会在几分钟内得到报告,但是当一些用户运行它时,报告会返回 502 Bad Gateway。 这只发生在大型报告中。

我认为它与超时有关?即使我更改哪个超时命令,网关错误都会在两分钟内出现。

【问题讨论】:

你能得到 502 错误的子状态(来自 IIS 日志)吗?此外,不确定您是如何做到的,但请查看以下问题(链接如下)以了解如何快速写入 Excel 范围。使用互操作方法非常缓慢。如果你是,那么也许改变这个策略会帮助你解决你的问题。 ***.com/questions/536636/write-array-to-excel-range 我认为这个问题仍然是exists和AFAIK,它与超时无关,它与准备响应的服务有关,并且在它处于down的情况下引发502错误!,通过重新启动该服务,您将看不到该错误(临时解决方案),但它不是正确的解决方案,HTH ;)。 【参考方案1】:

在构建大型报告时,我在 ASP.NET Core 上遇到了相同的错误 502。我的问题不是内存不足。日志显示,当我收到错误 502 时,该过程没有中断,并且它会继续构建报告直到结束。错误的原因是 IIS 超时。如果我将“requestTimeout”设置为:

<aspNetCore requestTimeout="00:20:00" processPath=".\xxx.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
</aspNetCore>

在 web.config 中,因此对于本地 URL(使用 localhost)- 错误 502 将消失,我会收到所有报告,甚至是巨大的,但对于外部 URL(使用域名)超时仍然相同 - 120 秒,和 502 错误。 web.config 中的 RequestTimeout 和下一个设置完全解决了我的问题:在 Internet 信息服务对话框中,展开本地计算机 > 站点并右键单击默认网站并选择管理网站 > 高级设置。展开 Connection Limits,将 Time-out 值更改为 XXXX,然后单击 OK。

【讨论】:

【参考方案2】:

问题与内存有关,我们不得不更改架构。从那时起,我们已经转移到专用的报告服务器并将报告分成不同的部分(即不同的时间范围),并在每个报告完成后再次组合它们。这可以通过 Azure 队列和 Blob 存储轻松实现。报告也会通过电子邮件发送,而不是通过 HTTP 调用返回。

【讨论】:

以上是关于ASP.Net 请求引发 502 Bad Gateway 或 TimeOut的主要内容,如果未能解决你的问题,请参考以下文章

Spotify Web API 调用引发 502 Bad Gateway 错误

502 bad gateway怎么解决 nginx

ASP.NET Core RC2 IIS 在选项请求上返回 502

部署在 IIS 上的 ASP.NET Core 对长时间运行的请求返回 502 错误

如何防止快递在我不回复请求时发送“502 Bad Gateway”?

通过 *** 发出的 Python 请求给出 502 Bad Gateway