По словам инженеров Microsoft, это невозможно с IIS 6. Однако они добавили новую функцию в IIS 7.5 и ASP.Net 4.0, в которой есть отличное условие для именно того, что я ищу здесь. Это называется "preloadProvider". Вот пример фрагмента ниже (очень круто!).
http://forums.iis.net/p/1158476/1907392.aspx
Поскольку один пул приложений может содержать несколько приложений, вы указываете, что отдельные приложения должны автоматически запускаться, используя следующую конфигурацию в файле applicationHost.config:
<sites>
<site name="MySite" id="1">
<application path="/"
preloadEnabled="true"
preloadProvider="PrewarmMyCache" >
<!-- Additional content -->
</application>
</site>
</sites>
<!-- Additional content -->
<preloadProviders>
<add name="PrewarmMyCache"
type="MyNamespace.CustomInitialization, MyLibrary" />
</preloadProviders>
При холодном запуске сервера IIS 7.5 или при перезапуске отдельного пула приложений IIS 7.5 использует информацию в файле applicationHost.config, чтобы определить, какие веб-приложения должны запускаться автоматически. Для каждого приложения, помеченного для автозапуска, IIS7.5 отправляет запрос в ASP.NET 4.0, чтобы запустить приложение в состоянии, во время которого приложение временно не принимает запросы HTTP. Когда он находится в этом состоянии, ASP.NET создает экземпляр типа, определенного атрибутом preloadProvider (как показано в предыдущем примере), и вызывает его общедоступную точку входа.
Вы создаете управляемый тип автозапуска с необходимой точкой входа, реализуя интерфейс IProcessHostPreloadClient, как показано в следующем примере:
public class CustomInitialization : System.Web.Hosting.IProcessHostPreloadClient
{
public void Preload(string[] parameters)
{
// Perform initialization.
}
}
После запуска кода инициализации в методе Preload и возврата метода приложение ASP.NET готово к обработке запросов.
С добавлением автоматического запуска в IIS 7.5 и ASP.NET 4.0 теперь у вас есть четко определенный подход для выполнения дорогостоящей инициализации приложения перед обработкой первого HTTP-запроса. Например, вы можете использовать новую функцию автозапуска для инициализации приложения, а затем сообщить балансировщику нагрузки, что приложение было инициализировано и готово принять трафик HTTP.