【问题标题】:No response received on long running AJAX request, despite the PreSendRequestContent event being hit长时间运行的 AJAX 请求没有收到响应,尽管 PreSendRequestContent 事件被命中
【发布时间】:2012-08-10 14:45:30
【问题描述】:

这个问题让我有点发疯 - 我已经花了 3 天时间来解决这个问题。为了让它更烦人,我无法在我们的开发/测试环境中复制它——它似乎只在我们的生产环境中表现出来。

场景:

有一个页面会触发一个上传器——这个上传器是一个 YUI2 javascript 上传器组件,它在后台使用了 flash。该文件可以正常上传到我们的服务器,之后会触发 uploadsuccess javascript 事件,这会导致向服务器发出 ajax 请求,以便我们可以进行进一步处理。处理需要相当长的时间 - 最多 12 分钟。我知道这本身就是一个问题,但是为此创建一个异步线程进程所需的工作相当复杂,我们已将其安排在另一天。目前,我们在 Web.config 中增加了 Web 请求超时限制,以便请求不会超时。

在我们的开发/测试环境中,该过程完成并收到响应。

在我们的生产环境中,该过程已完成,但从未收到任何响应。 :(

我试图找出问题:

我在代码中添加了大量的日志记录,甚至删除了在 asp.net 页面生命周期的每个事件被命中时记录的日志记录点。

该操作似乎可以正确处理,然后每个页面生命周期事件都会一直命中,直到最后一个事件(在内容响应发送回客户端之前触发的 PreSendRequestContent)。但是,我完全没有收到任何回复——我什至启动并运行了 fiddler 以确保这不是一些奇怪的浏览器问题。没有什么。 :(

我是一名开发人员,所以我觉得我在这里的调试方面已经用尽了我的选择。问题似乎在 IIS 中的某个更深的地方,在它离开 asp.net 堆栈之后,在它返回到客户端之前。

我的请求:

有没有人对可能发生的事情有任何远程倾向,或者我可以做些什么来继续我的故障排除和调试?

如标签中所述,该应用程序是一个 ASP.NET 应用程序(特别是 MVC 2),在 Windows Server 2008 机器上的 IIS 7.5 网络服务器上运行。

如果你能以任何方式提供帮助,我会赞美你到最后。

您的真诚; 沮丧的开发者

【问题讨论】:

    标签: asp.net iis windows-server-2008 iis-7.5


    【解决方案1】:

    好的,所以问题已经解决了,但是我始终无法找出确切的问题和请求被丢弃的点。这是一个间歇性问题,仅在非常长时间运行的请求期间才会受到影响,无论如何这对网络来说总是一个坏主意。

    我通过创建一个包含多个工作线程的后台工作队列来解决这个问题。对原始操作的请求现在被转移到工作队列。我还公开了一个状态页面,用户可以在其中跟踪这些项目的进度,甚至重试失败的项目。

    似乎运行良好,并且 UI 响应速度更快,这总是一件好事。

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 1970-01-01
      • 2014-12-04
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2018-10-01
      • 2015-11-16
      相关资源
      最近更新 更多