【发布时间】:2011-01-05 06:10:11
【问题描述】:
在使用此配置近 5 个月后,我现在得到了一系列:
“为应用程序池“经典 .NET AppPool”提供服务的进程与 Windows 进程激活服务发生了致命的通信错误。进程 ID 为“1640”。”
这导致:
应用程序池“Classic .NET AppPool”由于为该应用程序池提供服务的进程出现一系列故障而被自动禁用。
在我的一生中,我无法弄清楚是什么改变导致了这种情况,我也无法弄清楚如何可能更深入地挖掘是什么导致它失败。 p>
我最近(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。
【问题讨论】:
-
你能发布调用GetAutoNegotiationByCompany的方法(部分)吗?