IIS工作进程在第一次请求时永远挂起

时间:2012-05-24 12:50:21

标签: asp.net iis worker-process

我正在努力解决我已经有几天的问题。每当我的一个网站重建或AppPool被回收时,第一个页面加载将永远挂起(好吧,我只等了30分钟)。它只发生在~10个站点中的一个特定站点上。它是一个ASP.NET站点。

以下是我观察到的事情:

  • 在工作进程下的IIS管理器中,我可以看到请求。 Verb = GET,Sate = ExecuteRequestHandler,Module Name = ManagedPipelineHandler。当然,经历的时间不断增加。
  • 如果我关闭了我发出初始请求的浏览器,然后再打开一个新请求,则会立即加载该页面。
  • 在我的代码中,第一个请求不会调用Global.asax文件的Application_Start。它是在第二次请求时调用的。
  • 工作进程导致我的计算机上的内存使用通过屋顶

我对IIS的故障排除经验不足,但是几小时的搜索让我无处可去。

我们最近在网站上进行的唯一主要代码更改是我们已经开始使用log4net实现日志记录。我曾试图从我的web.config文件和Global.asax中删除任何log4net代码 - 仍然没有运气。

有没有其他人经历过这个,如果有,你是如何解决的?

非常感谢任何和所有帮助。

添加: 如果我将.txt文件放在站点的根目录中,并在构建后将其作为第一个加载,它将立即加载。 然而,工作进程仍然完全像以前那样行动,并且内存使用仍然在屋顶上。

最终修改:

我觉得自己像个白痴。我无法解释原因,但由于某种原因,我在Global.asax中的突破点突然受到打击,我能够找出问题所在。这是通过实体框架调用数据库的错误编写 - 即过滤是在获取了相关列中的所有行之后完成的。更糟糕的是,过滤是在foreach循环内完成的。无论如何,现在一切都恢复正常,我很高兴。

2 个答案:

答案 0 :(得分:3)

可能说明显而易见但你在app_start中的全局asax中没有任何可能导致此问题的愚蠢代码?

听起来像一个无限循环或什么?

答案 1 :(得分:1)

快速记下我的情况:

Process MonitorFailed Request Tracing都没有任何帮助。该网站只是(几乎)永远加载。

最后,在等待几分钟后发生错误,指出它“找不到网络路径”。

原因是我输入了一个连接字符串到一个不存在的SQL Server实例,所以它以某种方式搜索服务器。最后,发生了超时。

解决方案只是在Web.Config中的连接字符串中指定正确的SQL Server。