Почему на моем веб-сайте необходимо включить 32-разрядные приложения?

Я только что работал над переносом промежуточного веб-сайта с II6 на IIS8.

IIS8 поставляется с параметром Включить 32-разрядные приложения, который является настоящим ложным флагом. Объяснение этого флага:

[enable32BitAppOnWin64] Если установлено значение True для пула приложений в 64-разрядной операционной системе, рабочие процессы, обслуживающие пул приложений, работают в режиме WOW64 (Windows на Windows64). В режиме WOW64 32-битные процессы загружают только 32-битные приложения.

Теперь, если я установлю это значение на False, мой веб-сайт перестанет обслуживаться, и я получу 500 сообщений об ошибке:

Не удалось загрузить фильтр ISAPI «C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll» из-за проблемы с конфигурацией. Текущая конфигурация поддерживает только загрузку образов, созданных для архитектуры процессора AMD64. Поле данных содержит номер ошибки. Чтобы узнать больше об этой проблеме, в том числе о том, как устранить такую ​​ошибку несоответствия архитектуры процессора, см.

Теперь я догадался, что это должна быть сборка с установленными флагами x86, поэтому я следовал инструкциям из этот пост с использованием CorFlags, чтобы проверить это. Но все возвращают Any CPU, т.е.

Version    : v4.0.30319
CLR Header : 2.5
PE         : PE32
CorFlags   : 9
ILONLY     : 1
32BIT      : 0
Signed     : 0

Есть небольшие версии, но это суть.

Так почему же мне нужно установить для параметра "Включить 32-разрядные приложения" значение True?

Поэтому я провел дополнительное исследование с помощью Process Explorer (это < href="https://stackoverflow.com/questions/247098/x64-net-compilation-process-explorer-oddity">вопрос помог), и кажется, что если я установлю для включения 32-разрядных приложений значение False и хотя Corflags говорит, что им не требуется 32-разрядная версия, некоторые из dll имеют 32-разрядный тип изображения:

введите здесь описание изображения


person Liam    schedule 29.05.2013    source источник


Ответы (1)


Я считаю, что я добрался до сути этого, в конце концов!

Таким образом, похоже, что на этой машине отсутствует часть конфигурации x64. В частности, конфигурация ISAPI Filters содержала стандартную .net 4 aspnet_filter.dll (C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll), но не x64. версия (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll)

введите здесь описание изображения

Пообщавшись с нашими инфраструктурными ребятами, они предположили, что лучший способ правильно настроить это — удалить компонент .Net 4.0 и переустановить его, имейте в виду, что для этого требуется перезагрузка!

person Liam    schedule 29.05.2013