我阅读了 Phil Haack 关于使用IRegisteredObject
接口确保后台线程在 AppDomain 关闭时完成的文章,并将其实现到我的代码中。但是,我不完全确定如何模拟 AppDomain 崩溃以对其进行测试。如何模拟 AppDomain 崩溃?
问问题
2876 次
1 回答
9
让 AppDomain 关闭的最简单方法是让父进程停止。在 ASP.NET 中,您可以通过回收或停止运行代码的应用程序池来实现此目的。我们有一些代码可以确保日志记录被刷新,这就是我过去测试它的方式。
至于完全崩溃,我不太确定你该怎么做......托管环境会捕获异常,因此它可能不可行。您可以尝试Environment.Exit
或者Environment.FailFast
哪个会强制父进程立即退出?
编辑:我在这里忘记了最简单的选项......只需保存 Web.config - 这将触发 AppDomain 回收!
一些替补...
如果您使用 IIS 运行,则可以启动 IIS 管理器并按照以下步骤回收应用程序池...
- 在“站点”下方找到您的应用程序。它可能位于其中一个网站的下方——可能是一个虚拟目录。
- 右键单击应用程序并选择“管理应用程序”,然后选择“高级设置”。
- 记下“应用程序池”。
- 在“应用程序池”下方找到应用程序池。
- 右键单击它并点击回收。
对于 IIS Express,您只需右键单击托盘中的图标,在 UI 中您应该能够在此处停止应用程序。
对于 Visual Studio Development Server (Cassini),您还可以使用托盘停止应用程序。
于 2012-07-10T16:33:42.093 回答