2009-11-07 5 views
5

Я разрабатывал веб-приложение ASP.NET MVC для Windows XP и Visual Studio 2008 (с использованием веб-сервера Visual Studio). Недавно я установил Windows 7 64-разрядную версию Ultimate, IIS 7.5 и перенесла свое приложение с помощью appcmd.Почему мой сайт пытается загрузить 32-разрядную версию aspnet_filter.dll, даже если для параметра enable32BitAppOnWin64 установлено значение False?

Если я установил флаг enable32BitAppOnWin64 == false в моем пуле приложений, мое приложение работает нормально. Как только я установил его истинным (так как я хочу, чтобы работать в 64 бит) он бросает это исключение:

Screen Shot of error

HTTP Error 500.0 - Internal Server Error 
Calling LoadLibraryEx on ISAPI filter "C:\Windows\Microsoft.NET\Framework\v2.0.50727\\aspnet_filter.dll" failed 

Если я и удалить все ISAPI фильтры, но оставить ASP.Net_2.0.50727-64 затем эту ошибку уходит.

Как это разрешить?

+0

Кто ты Мохит ты индийский Regard Anirudha Гупта http://anirudhagupta.blogspot.com – 2009-11-17 05:47:06

+0

да Anirudha, я индеец ... – Mohit

ответ

2

Похоже, вам нужны 64-битные фильтры ISAPI.

32-разрядные DLL-файлы не будут работать на 64-битной машине, если вы не побрызгаете какую-то магическую пикси-пыль на них. Вот почему существует флаг enable32BitAppOnWin64.

Установите флаг true и погрейтесь в славе пыли эльфа.

+0

Но я думаю, что у меня есть 64 битный ISAPI фильтр, который находится в моем каталоге framework64, в котором указывается ASP.Net_2.0.50727-64 – Mohit

0

Похоже, что обработчик Mapping preConditions для вашего сайта немного испорчен. В IIS MMC перейдите на сайт и откройте функцию сопоставления обработчиков. На панели «Действия» справа нажмите ссылку «Восстановить родителя».

3

Ваш ключ находится в пути, указанного в ошибке:

"C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_filter.dll"

Обратите внимание, есть дополнительный слэш в путь. При повышенной командной строке перейдите в каталог ../Framework/v2.0.50272 и выполните следующую команду:

aspent_regiis -r

В качестве альтернативы, использование IIS для изменения правильного пути фильтра.

Так что никакой волшебной пыли не требуется ... вам просто нужно зарегистрировать правильный путь. :)

+2

'aspnet_regiis -r' недостаточно для исправления этой проблемы для меня, но' aspnet_regiis -ua' (для удаления всех инфраструктур asp.net) и ТОГДА '-r' действительно работал. Возможно, вам придется исправлять разрешения в папке «Временные файлы ASP.NET» после этого. –

0

Только что это случилось с развертыванием проекта. Изменение пула приложений для сайта сделало трюк. Найден ответ на Rick Strahl's weblog