我有一个托管在 IIS 8 上的 ASP.NET MVC 4 Web 应用程序(扩展 System.Web.HttpApplication 的 MvcApplication)。我的应用程序以集成管道模式在单独的应用程序池上运行。此应用程序池的最大工作进程计数设置为 1。
我了解,应用程序实例可能会被合并,并且可能有多个并行线程,它们将为我的应用程序(AppDomain)的同一实例调用 Begin_Request/End_Request。另外我知道,如果我将“最大工作进程数”设置为大于 1,那么肯定会有多个应用程序实例(AppDomain)。
我不明白的是,将发出多少对 Application_Start 的调用,以及在给定时刻将存在多少我的静态变量实例(存储在 MvcApplication 中,还有一些单例,如 NHibernate 会话工厂等)。
目前我在清理 .NET MemoryCache 时遇到了一些问题。我网站的一些用户正在从缓存中接收旧值,因此导致我认为可能存在多个全局 MemoryCache 实例,即使我将“最大工作进程计数”设置为 1。
将在单个工作进程中并行运行的应用程序静态变量和单例的最大实例数是多少?
是否有任何实用程序或脚本可以帮助我枚举 IIS 上的所有 AppDomain?