在使用此配置近 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”的未处理异常以进一步说明。