Épp az Application Warm-Up Module konfigurációját matattam az egyik projektünkben, amikor arra lettem figyelmes, hogy az IIS Manager mindenféle hibaüzenet nélkül eltűnik, ha a megpróbálom megnyitni benne ennek a modulnak a beállító ablakát. Az volt az érdekes, hogy csak ennél az alkalmazásnál csinálta, más alkalmazásoknál nem volt vele ilyen probléma.
Az Application Warm-Up modul még csak bétában van, ezért gyorsan szétnéztem a fórumon, hogy van-e ezzel kapcsolatban valami, mert emlékeztem, hogy a telepítése után a konfiguráció visszatöltésével kapcsolatban is van egy bug, hátha ez egy másik. Nem találtam semmit sem a fórumban, sem a Google-lel, ezért kénytelen voltam jobban utánajárni.
Az Application Logban találtam egy IIS-IISManagertől származó bejegyzést 13-as EventID-val:
IISMANAGER_CRASH
IIS Manager terminated unexpectedly.
Exception:ResourceName:
Microsoft.Web.Management.Server.WebManagementServiceException: Filename: \\?\W:\Development\TFS\LexSolution\Web\web.config
Error:
---> System.Runtime.InteropServices.COMException (0x8007000D): Filename: \\?\W:\Development\TFS\LexSolution\Web\web.config
Error:
at Microsoft.Web.Administration.Interop.AppHostWritableAdminManager.GetAdminSection(String bstrSectionName, String bstrSectionPath)
at Microsoft.Web.Administration.Configuration.GetSectionInternal(ConfigurationSection section, String sectionPath, String locationPath)
at Microsoft.Web.Administration.Configuration.GetSection(String sectionPath)
at Microsoft.Web.Management.AppWarmup.AppWarmupModuleService.GetWarmupEnabled()
--- End of inner exception stack trace ---
...
Látszik, hogy próbálta kiolvasni az alkalmazás web.configjából a modulhoz tartozó egyik beállítást (enabled/disabled), de nem sikerült neki. Hogy miért nem, az nem derül ki, a HRESULT 0x8007000D nem éppen beszédes. A KB942055 szerint ez a hibakód jön akkor is, ha a “related configuration data for the page is invalid”. Itt már komolyan gyanakodtam, hogy talán mégis én szúrtam el valamit :)
Alaposabban megnézve kiderült, hogy csak ezzel az egy alkalmazással van gond, a többi alkalmazásnál ugyanezen a szerveren nincs gond az IIS Managerrel, tehát itt lehet valami hiba a web.configban. Csakhogy a web.config ide vonatkozó részét másoltam, mégpedig az URL Rewrite modultól, mert mindkét modulnak aránylag hosszú a konfig szekciója, ezért mindkettőt külső fájlba akartam tenni. Az URL Rewrite modulnál ez így működik is:
<rewrite>
<rules configSource="urlrewrite.config" />
</rewrite>
Az Application Warm-Up modulnál ugyanez a forma nem jött be, végül ez lett a helyes szintakszis, amivel az IIS Manager is megbékélt:
<httpWarmup configSource="warmup.config" />