У меня есть одно веб-приложение ASP.NET MVC 4 (MvcApplication, которое расширяет System.Web.HttpApplication), размещенное на IIS 8. Мое приложение работает в отдельном пуле приложений в режиме интегрированного конвейера. Максимальное количество рабочих процессов для этого пула приложений установлено равным 1.Сколько экземпляров веб-приложения работает в одном рабочем процессе?
Я понимаю, что экземпляры приложений могут быть объединены и может быть несколько параллельных потоков, которые вызовут Begin_Request/End_Request для того же экземпляра моего приложения (AppDomain) , Также я понимаю, что если я установил «Максимальное число рабочих процессов» более чем на 1, то будет определенно более одного экземпляра приложения (AppDomain).
Что я не понимаю, так это количество вызовов в Application_Start и сколько экземпляров моих статических переменных (хранимых в MvcApplication, а также некоторые синглтоны, такие как фабрика сеансов NHibernate и т. Д.) Будут существовать при заданном момент.
В настоящее время у меня есть некоторые проблемы с очисткой .NET MemoryCache. Некоторые пользователи моего веб-сайта получают старые значения из кеша, что заставляет меня думать, что может существовать более одного экземпляра моего глобального MemoryCache, даже если я установил «Максимальное число рабочих процессов» равным 1.
Что максимальное количество экземпляров статических переменных моего приложения и синглтонов, которые будут выполняться параллельно в одном рабочем процессе?
Есть ли какая-либо утилита или скрипт, который поможет мне перечислить все AppDomains в IIS?