我有一个在 IIS7 上运行的 C# ASP.NET Webforms 网站。它是一个报表创建应用程序,可查询 SQL Server 数据库、获取数据、将其解析为 Excel 文档。
查询本身不会花费太长时间,但是当查询非常大(50,000 行)时,写入 Excel 需要一段时间。
现在的问题是,当我运行报告应用程序时,我会在几分钟内得到报告,但是当一些用户运行它时,报告返回 502 Bad Gateway。 这只发生在大型报告中。
我认为它与超时有关?即使我更改了哪个超时命令,网关错误也会在两分钟内出现。
最佳答案
我在 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 信息服务对话框中,展开本地计算机 > 站点并右键单击默认网站并选择管理网站 > 高级设置。展开连接限制,将超时值更改为 XXXX,然后单击确定。
关于c# - ASP.Net 请求引发 502 Bad Gateway 或 TimeOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021607/