文件上传 10 分钟后,ASP.NET MVC 出现 504 错误

文件上传 10 分钟后,ASP.NET MVC 出现 504 错误

我有一个 ASP.NET MVC2 Web 应用程序,与 SQL Server 2008 R2 配合使用,并在 IIS 6.2 上运行。我有一个功能,其中一位特定管理员需要上传大约 5000 个文档,然后这些文档将被处理并存储在服务器中,同时它们的名称将保存在数据库中。

问题是,在客户端,文件上传开始 10 分钟后,我收到:错误 504 超时,网关超时。我更改了 web.config 中的 httpRuntime.ExecutionTimeout 值,但问题并未解决。

有谁知道限制我的值存储在哪里?

这是我的 web.config 文件:http://pastebin.com/VXs0BFTp

编辑:此外,收到错误 504 后,数据库中的数据存储仍会继续。

答案1

从您的描述来看,您的客户端 -> Web 服务器连接超时很可能与代理使用有关。如果您的服务器处理文件的时间超过 10 分钟,则您的客户端无法及时收到响应,但 Web 服务器可以进一步处理。

httpRuntime.ExecutionTimeout指定在关闭之前允许 IIS 线程处理请求的数量,因此它不会对您的问题产生任何影响。

如果您无法优化服务器端的文件处理,我的建议是重新设计。一种可能的方法是上传所有文件,尽快响应客户端并异步处理。当然,客户端 UI 应该进行更改,以便能够显示处理状态(例如以百分比表示)。

如果上传过程耗时太长(例如几分钟),解决方案可能是让管理员将文件传输到网络位置,然后开始处理(Web 服务器应该有权从该位置读取)。这不是非常用户友好,但管理员不是普通用户。

相关内容