我们有一个在 IIS7 / Windows 2008 上运行的 ASP.NET (3.5 SP1) 应用程序。我们在 Global.asax 中捕获 Application_Start 和 Application_End 事件。我们还在应用程序中托管 WCF 服务,并通过 ServiceHostFactory 捕获 OnOpening 和 OnClosing 事件。因此,我们认为,我们可以保证通知任何应用程序的启动和停止,无论是计划的还是非计划的。
几天前,我们的应用程序在“已启动”/“运行”状态下捕获了一个 Application_Start 事件。
在 Application_Start 之前没有 Application_End 事件(如果考虑到竞态条件,甚至几分钟之后)。
我们的第一个想法是我们的应用程序实际上默默地崩溃并终止了。实际上发生的事情是一个新的 App Domain 启动以服务入站请求,但现有 App Domain 的后台线程(我们在 ThreadPool 线程中做很多事情)仍然运行了几天——直到我用 IISRESET 杀死了它们。
猜测是 Application_End 没有触发,因为原来的 AppDomain 没有结束......但是为什么 Application_Start 触发了?
寻找描述这种半关闭+AppDomainStartup 机制在 ASP.NET 中如何工作的提示或文档。
提前致谢,
霍华德霍夫曼