1

在使用此配置近 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 -> 点击 Invoke
  • VS IDE 中的断点 -> (见上文)

注意

看起来它可能是由 EF 中的另一个问题引起的。请参阅C# - 实体框架 - mscorlib.dll 中发生类型为“System.StackOverflowException”的未处理异常以进一步说明。

4

2 回答 2

0

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

情况可能并非如此,但这是我在 iis 中遇到的唯一类似的反复出现的问题。

于 2010-01-14T20:36:06.330 回答
0

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

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

于 2010-01-19T20:31:13.883 回答