Včera jsem řešil následující problém:
Na vývojovém počítači, kde mám nainstalovaný HttpPlatformHandler pro vývoj pro ASP.NET 5 mi nechodila v IIS starší aplikace, která potřebuje 32-bitový režim - aplikační pool s volbou Enable 32-Bit Application.
Při spuštění aplikace se zobrazila chyba Service Unavailable a aplikační pool spadl. Více prozradil až eventlog, kde se objevila následující chyba:
The Module DLL C:\WINDOWS\system32\inetsrv\httpPlatformHandler.dll failed to load. The data is the error.
Z toho se tedy dá usoudit, že problém je v tom, že se IIS pokouší načíst HttpPlatformHandler modul, který pod 32-bit modem nechodí.
Vzpomněl jsem si, že podobný problém jsem kdysi řešil s 32-bit aplikačním poolem na počítači s instalovaným WSUS, kde chyběla jeho 32-bit verze dll souboru (suscomp.dll). Tam bylo potřeba 32-bit dll do IIS ručně donahrát.
Zkusil jsem nainstalovat 32-bit verzi HttpPlatformHandler, ale instalace httpPlatformHandler_x86.msi pouze oznámí “The 32-bit version of Microsoft Platform Handler 1.2 cannot be installed on a 64-bit edition of Microsoft Windows”.
Přišel jsem tedy na toto řešení:
- Instalaci httpPlatformHandler_x86.msi je potřeba ručně rozpakovat, já na to použil program 7-zip.
- Rozpakovaný soubor HttpPlatformHandlerDll přejmenujeme na HttpPlatformHandler.dll.
- Soubor HttpPlatformHandler.dll nahrajeme do adresáře C:\Windows\SysWOW64\inetsrv.
- Zrestartujeme IISko příkazem iisreset z administrátorský command line. (Nahraná dll není naštěstí potřeba nijak registrovat.)
Po těchto krocích již 32-bit webová aplikace funguje.