ASP .NET MVC на IIS 7.5, Windows 7 64 бит - PullRequest
0 голосов
/ 17 января 2011

Я недавно установил 64-битную Windows 7 на свою машину, чтобы попробовать свои силы в 64-битной среде, веб-сайт всегда работал нормально на 32-битной Windows 7 (VS 2008 была средой разработки).

Этот веб-сайт разрабатывается для Visual Studio 2008 с целью .Net 3.5 fx и ASP .NET MVC1.

На этом 64-разрядном компьютере я установил VS 2010 и начал использовать его для веб-сайта (мы рассматриваем переход на VS2010, а также планируем развернуть наш веб-сайт на 64-разрядном компьютере). Веб-сайт прекрасно создан на VS 2010.

Но когда я открыл сайт, он выдал следующую ошибку.

Ошибка сервера в приложении '/'.

не является допустимым приложением Win32. (Исключение из HRESULT: 0x800700C1)

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.BadImageFormatException: не является допустимым приложением Win32. (Исключение из HRESULT: 0x800700C1)

Вот сводка трассировки для вышеуказанной ошибки. Trace, App Pool 32 bit false

Я даже пытался запустить aspnet_regiis -i для .Net 2.0 в c: \ windows \ Microsoft .Net \ Framework64.

Затем я также попытался установить 32-битный пул приложений, предварительно включив 32-битные настройки для пула приложений. Но даже этот вмятина работает на меня.

Ошибка, которую я получил после включения 32-битной в пуле приложений

Указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.IO.FileNotFoundException: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

След похож на тот, что я вставил выше.

Любые идеи о том, как я могу решить эту проблему.

Ответы [ 4 ]

2 голосов
/ 04 октября 2013

Решением этой ошибки является просто изменение конфигурации II7.

  1. Перейти к IIS. Нажмите на пул приложений.
  2. Найдите ваше веб-приложение в пуле приложений. 4. Перейдите в Расширенные настройки, щелкнув правой кнопкой мыши ранее выбранный пул приложений.
  3. Включите 32-битные приложения, отметив его.

enter image description here

1 голос
/ 17 января 2011

Похоже, что одна из ваших зависимостей использует версию сборки x86. Чаще всего это то, что оборачивает COM-объект или вызывает собственные методы p / invoke.

Я бы начал с использования рефлектора, чтобы посмотреть на зависимости и посмотреть, сможете ли вы найти плохую зависимость.

0 голосов
/ 25 января 2011

Настройки, которые я упомянул в своем вопросе, помогли мне запустить мой Webapp в 32-битном режиме на 64-битной ОС.

Я не изменяю что-либо на своей машине после того, как сделал, как указано выше. Итак, мой рабочий процесс теперь работает в 32-битном режиме.

Полагаю, нам нужно взглянуть на замену некоторых неуправляемых dll управляемыми.

Преимущества использования IIS в 32-разрядной и 64-разрядной версиях состоят в том, что мой IIS получит больше адресного пространства, а размер кэша в памяти может быть больше в 64-разрядной.

Подробнее о преимуществах использования IIS в 32-разрядной и 64-разрядной версиях здесь. Каковы преимущества и недостатки использования IIS как 32-разрядного по сравнению с 64-разрядным в 64-разрядной ОС?

0 голосов
/ 17 января 2011

Убедитесь, что вы создаете свои библиотеки DLL для платформы «Любой ЦП» с помощью Configuration Manager.Система будет испытывать трудности только в том случае, если вы попытаетесь получить доступ к 64-битной сборке для другой сборки, которая помечена как 32-битная.

Вы можете проверить отдельные библиотеки DLL с помощью инструмента SDK CorFlags.exe для ваших сборок.Это приведет к выводу, подобному следующему:

Microsoft (R) .NET Framework Инструмент преобразования CorFlags.Версия 2.0.50727.42 Авторские права (c) Microsoft Corporation.Все права защищены.

Версия: v2.0.50727 CLR Заголовок: 2.5 PE: PE32 CorFlags: 1 ILONLY: 1 32BIT: 0 Подписано: 0

Флаг 32BIT будет установлен, если вы компилируетесборка для 32-битного выполнения.

Я не уверен, но включение ведения журнала FUSION может помочь вам найти виновника.

...