ASP.NET - 为什么数据库SP错误应用程序池崩溃?

时间:2011-08-12 20:09:11

标签: asp.net iis-7 .net-4.0 application-pool

我有一个ASP.NET 4.0应用程序,它通过WCF连接到MSSQL,然后连接到存储过程层。

由于某些原因,对于这些图层,每当我访问丢失的SP或返回错误消息时,都会导致我的应用程序挂起,因为应用程序池已停止。在本地调试模式下,这会导致Web服务器崩溃。

为什么会这样? 我是否可以更改设置以导致“更好”的行为,而不是崩溃或停止应用程序池?

更新:我实际上发现应用程序池正在停止,而不是崩溃。它在IIS7 / Windows Server 2008 R2中停止,因为它在短窗口中遇到了太多错误。我调整了应用程序池设置以防止它停止,一切正常。错误可以忽略不计。

3 个答案:

答案 0 :(得分:2)

应用程序池实际上并没有崩溃,而是停止。

这是解决方案:

关闭应用池的快速失败保护。

http://weblogs.asp.net/nannettethacker/archive/2009/01/08/windows-2008-and-iis7-application-pool-stopped.aspx

答案 1 :(得分:0)

我看到崩溃池的唯一问题是称他为self并进行stackoverflow。因此,如果在出现错误时有任何类似的调用,请检查您的代码。

public string Text
{
   get {return Text;}
   set {Text = value;}
} 

也许这样的事情会让他自言自语并崩溃。

protected override void OnLoad(EventArgs e)
{
  // call by mistake the OnInit and make close loop
  base.OnInit(e);
}

例如,可能当您遇到错误时,您调用的页面会在循环中再次调用相同的错误页面。

答案 2 :(得分:0)

IIS Health Monitoring已经回收了工作进程,因为它无法响应ping。

在我的开发机器上,我禁用了它。在应用程序池的“高级设置”下,在“流程模型”部分下设置“Ping Enabled”= False。