Как видно из заголовка, нам нужно разместить рядом два разных веб-сайта (каждый со своим собственным пулом приложений) в IIS 8.5 Windows Server 2012 с полным обновлением.
Один сайт ASP.NET MVC5 работает в 32-битном режиме, а другой - .netcore2.2 в 64-битном режиме.
.netcore2.2 требует, чтобы AspNetModuleCoreV2.dll был загружен в IIS. Проблема в том, что это приводит к сбою 32-битного веб-сайта при загрузке (503 служба недоступна).
Если мы удалим из ApplicationHost.config 64-битный AspNetModuleCoreV2.dll, указывающий на:
C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
(or even replace it with the 32bit flavor C:\Program Files (x86)\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll)
тогда 32-битный веб-сайт работает нормально, но это приводит к сбою 64-битного веб-сайта .netcore2.2.
Так как мы можем сделать оба сайта счастливыми под одной крышей IIS8.5? Вещи, которые мы попробовали:
Использование настройки удаления обработчика в файле web.config 32-битного веб-сайта:
<handlers>
<remove name="AspNetCoreModule" />
<remove name="AspNetCoreModuleV2" />
</handlers>
К сожалению, это не сработало. По-прежнему получаю 503 (обновление: хорошая идея, плохое исполнение - читайте ниже - мы могли бы обойтись без этого!)
Обновление: Хммм, когда я писал эти две вещи, мы почти сразу вспомнили:
Чтобы удалить модуль, мы должны использовать следующий раздел в Web.config (вместо ):
< system.webServer >
< modules >
< remove name="AspNetCoreModule" />
< remove name="AspNetCoreModuleV2" />
< /modules>
< system.webServer>
По какой-то причине установщик установил модуль AspNetCoreModuleV2 как:
C: \ Program Files \ IIS \ Asp.Net Core Module \ V2 \ aspnetcorev2.dll
Вместо:
%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll
Переменные среды - это разница, которая может иметь значение, когда дело касается 32-битных сайтов. Собираюсь попробовать вещи.