【问题标题】:ASP.Net timeout processing file after upload上传后的ASP.Net超时处理文件
【发布时间】:2014-09-18 00:01:52
【问题描述】:

我们在 IIS7 上有一个 ASP.Net Web 应用程序,用于上传 Excel 文件,然后通过在 SQL 服务器上运行作业将它们加载到 SQL 数据库中。该应用程序将等到作业完成,然后向用户显示一条消息。由于使用了一些较大的文件,应用程序会抛出以下错误。

网络错误(tcp_error)

发生通信错误:“”Web 服务器也可能已关闭 忙,或遇到其他问题,使其无法响应 要求。您可能希望稍后再试一次。寻求帮助, 请联系您的网络支持团队。

该应用程序使用 asp:View 来从各个步骤中取得进展。我试图增加会话超时和 httpRuntime executionTimeout 值以说明作业运行所需的时间,但它似乎没有任何效果。我知道工作已经完成,但应用程序没有向用户显示该反馈。我认为当应用程序触发逻辑以向用户显示显示所有最终消息的视图时会引发错误。

我只能猜测 a) 有另一个我不知道的超时设置,b) 另一个配置文件设置推翻了我的应用程序 Web 配置设置,或者 c) asp:View 正在计算所有各个步骤作为一个漫长的过程,并且在每个步骤完成时都不会重置“时钟”。

正如我所说,文件上传正常,作业完成正常,应用程序无法前进到最后向用户显示视图的最后一步。关于我可以寻找什么来解决这个问题的任何想法?我唯一的其他选择是重写应用程序以不等待作业完成并以其他方式通知用户。

更新 1 经过进一步测试,错误似乎来自我们创建的执行 SQL 批量复制的 ASP.Net 自定义代码,而不是 SQL 作业的运行。当前测试在本地运行大约 220 秒,但会导致测试服务器超时。

更新 2 经过更多研究,我倾向于认为用户 pevgeniev 是正确的,这只是浏览器的一个限制因素。唯一阻止我将此标记为已回答的是我不知道为什么文件上传似乎没有同样的问题。

【问题讨论】:

    标签: asp.net iis-7


    【解决方案1】:

    如果您在浏览器中收到此错误,则说明超时发生在客户端,而您在服务器端无能为力。正如您所建议的,您可以重写应用程序,以便它轮询来自客户端的结果,而不是期望在单个请求中完成任务。

    【讨论】:

    • 真的吗?我认为这是更多的服务器端配置,因为我首先阅读的链接都是人们试图在大型(500mb+)文件上使用 ASP 上传控件的详细示例。在这些帖子中,响应者通常会引用可以在不超时的情况下处理大文件的应用程序。假设问题是相关的,我希望它只是另一个配置设置应用程序或服务器端。鉴于导致超时的步骤是我们的 SQL 批量复制 ASP.Net 代码,如果是客户端/浏览器问题,听起来我会被卡住。
    • 我认为你是对的,但我找不到任何东西来解释为什么文件上传不会发生同样的问题。除非是因为客户端在文件上传期间仍然处于活动状态,所以从技术上讲它不是超时。
    • 我不能100%确定文件上传的区别,但我也认为是因为浏览器和服务器之间仍然存在活动连接,所以从技术上讲,“请求”仍未完成。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多