IIS7 / Win7 - 应用程序池突然失败

时间:2010-01-14 20:29:19

标签: iis-7 application-pool

使用此配置近5个月后,我现在得到一系列:

  

“服务应用程序池'Classic .NET AppPool'的进程与Windows进程激活服务发生了致命的通信错误。进程ID为'1640'。”

这导致:

  

应用程序池“Classic .NET AppPool”由于为该应用程序池提供服务的过程中出现一系列故障而被自动禁用。

我不能,为了我的生活,弄清楚改变了什么才能开始造成这种情况,也无法弄清楚如何深入挖掘 导致它失败的原因。

我最近(2周前)开始在我的解决方案中添加实体框架。在此之前,由于报告的自引用调用,我确实得到了“堆栈空间不足”错误。我在我编写的代码中找不到任何类似的调用,并且怀疑EF可能在我的简单(3表)模型中添加了一个错误的连接。

关于从哪里开始寻找的任何想法?什么会导致AppPool失败?

TIA


注意

  

mscorlib.dll中出现未处理的“System.StackOverflowException”类型异常

我有一个外部对象调用此方法来获取单个记录:

public static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    return RivWorks.Controller.Negotiation.GetAutoNegotiationByCompany(companyId);
}

该方法调用:

internal static AutoNegotiationDetails GetAutoNegotiationByCompany(Guid companyId)
{
    var autoNeg = from a in _dbRiv.AutoNegotiationDetails where a.CompanyId == companyId select a;
    var ret = autoNeg.FirstOrDefault();
    return ret;
}

在单步执行中我可以在第一个方法中设置一个断点,进入第二个方法,查看填充的记录,返回第一个方法然后最后退出方法。此时我的IDE会锁定几秒钟,直到我收到StackOverflow错误。

为了更准确地了解整个系统:

  • 在IIS计算机上运行WebOrb30。
  • 在VS IDE中 - >附加到进程(INETINFO.exe)
  • 登录WebOrb30 - >管理控制台 - >深入研究服务入口点 - >在输入框中输入CompanyID - >单击“调用”
  • 在VS IDE中点击断点 - > (见上文)

注意

看起来它可能是由EF中的另一个问题引起的。有关进一步说明,请参阅C# - Entity Framework - An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

2 个答案:

答案 0 :(得分:0)

我可能认为您有两个使用一个应用程序池的应用程序/网站,但应用程序/网站运行的是不同的.net版本。

情况可能并非如此,但这是我曾经遇到的唯一类似的问题。

答案 1 :(得分:0)

由于我的实体框架中的一个错误,我在我的一个关系中得到一个循环调用。这导致堆栈溢出,报告给WebOrb作为一般错误,WebOrb将停止导致应用程序池崩溃。 (我仍然不太了解所有具体细节)。当我在没有关系的情况下重建我的EF模型时,行为就消失了。 (叹气/)

EF将是另一个问题(或一系列问题)。