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 错误
ASP.NET Core RC2 IIS 在选项请求上返回 502
部署在 IIS 上的 ASP.NET Core 对长时间运行的请求返回 502 错误