2013-05-30 1 views
0

Я получаю следующее исключение на производственной машине для настольных приложений Windows:Инструменты для диагностики ошибки BadImageFormatException для сборки System.Data в процессе производства?

Не удалось загрузить файл или сборку 'System.Data, Version = 4.0.0.0, Culture = нейтрален, PublicKeyToken = b77a5c561934e089' или одной из его зависимостей . Файл поврежден. (Исключение из HRESULT: 0x8013110E)

Я понимаю, что может быть несколько причин, таких как платформы рассогласования, целевой платформы .NET Framework рассогласование, и т.д. Но, какие инструменты/проверки можно запустить на производственной машине точечную причина ?

+0

90% связано с проблемой архитектуры x86 или x64. Попробуйте это первым. – David

+0

Трудно видеть, как вы получили BadImageFormatException из этого сообщения. Это далеко за пределами этого исключения, ничего тонкого из-за сообщения «Файл не является коррумпированным». Это очень необычное исключение, первое, что я видел за последние 8 лет. Я бы интерпретировал это за то, что он пытается сказать, лучше скоро замените этот жесткий диск. Спросите у superuser.com советы о том, как диагностировать проблемы с дисками. –

ответ

0

Дело в том, что приложение находится в 64-разрядной версии. Посмотрите на это и найдите опцию в дополнительных настройках пула приложений в IIS7 с названием «Включить 32-разрядные приложения». enter image description here

После установки его в положение true все будет работать нормально.

Примечание. Если вы хотите использовать это в IIS6, имейте в виду, что IIS6 не поддерживает это в «пуле приложений». Поэтому, если вы установите IIS6 на 32 бит, все его пулы приложений будут работать в 32-битном режиме. Если вы хотите установить это в «пуле приложений», вам придется перейти на IIS7. Чтобы установить IIS6 до 32 бит, выполните следующие действия:

  1. Откройте командную строку и перейдите к % системный_диск% \ Inetpub директории \ AdminScripts.
  2. Введите следующую команду:

cscript.exe adsutil.vbs набор W3SVC/AppPools/Enable32BitAppOnWin64 «истинный» кажется, что в некоторых случаях, «истинный» из приведенных выше команд необходимо заменить a 1. Иногда также необходимо сбросить IIS.