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

标签 c# asp.net iis http-error

我有一个在 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/

相关文章:

c# - 运行示例 MVC 项目时需要身份验证

c# - 托管在 IIS/Asp.NET 应用程序中的 HttpClient 证书不起作用

c# - 将数组从 C++ 移动到 C#、修改它并将其传递回 C++ 的最简单方法

c# - 在 WebBrowser-Control C# .Net 2.0+ 上禁用图像加载

c# - 为什么 .NET JIT 编译器决定不内联或优化对没有副作用的空静态方法的调用?

c# - 网页生命周期是什么意思?

c# - 为什么 C# 不允许我在不同的范围内使用相同的变量名?

c# - 在页面加载时填充下拉列表

asp.net - 如何在 mysql 数据库中存储文件列表并根据用户角色显示它们

c# - 线程运行时回收IIS进程