繁体   English   中英

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

[英]ASP.Net request raises 502 Bad Gateway or TimeOut

我有一个在 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,然后单击确定。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM