BadImageFormatException в IIS на x64

Я использую Windows 7 x64. Я получаю исключение BadImageFormatException при запуске приложения MVC. Если он работает в пуле приложений с включенными 32-разрядными приложениями, исключение не создается. Похоже, проблема заключается в загрузке global.asax. Я включил параметр реестра Fusion logging (HKLM\software\Microsft\Fusion!EnableLog). Это журнал:

    === Pre-bind state information ===
LOG: User = NT AUTHORITY\SYSTEM
LOG: Where-ref bind. Location = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\spl.sim.mvc\5802065c\a2782d40\App_global.asax.olejmmua.dll
LOG: Appbase = file:///C:/Spl/SimSvn4.5/Source/Spl.Sim.Mvc/
LOG: Initial PrivatePath = C:\Spl\SimSvn4.5\Source\Spl.Sim.Mvc\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in LoadFrom load context.
WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().
LOG: Using application configuration file: C:\Spl\SimSvn4.5\Source\Spl.Sim.Mvc\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/spl.sim.mvc/5802065c/a2782d40/App_global.asax.olejmmua.dll.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.

Используя различные конфигурации сборки, это результат:

Сборка x64, 32-битный пул приложений false: ошибка

Сборка x86, 32-битный пул приложений false: ошибка

Сборка AnyCPU, 32-битный пул приложений false: ошибка

Сборка x64, 32-битный пул приложений true: ошибка

Сборка x86, 32-битный пул приложений true: OK

Собрать AnyCPU, 32-битный пул приложений true: OK

IIS Express: ОК

Как я могу найти 32-битную проблемную dll, используемую в 64-битной конфигурации?


person pexxxy    schedule 31.10.2012    source источник


Ответы (1)


Я нашел проблему. Я использовал Instrumentation для профилирования. Это добавило следующие строки в web.config:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.VisualStudio.Enterprise.AspNetHelper" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <codeBase version="11.0.0.0" href="file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2011.0/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Enterprise.AspNetHelper.DLL" />
  </dependentAssembly>

После удаления этой зависимой сборки из раздела web.config программа работает как положено. Я также удалил атрибут assemblyPostProcessorType из элемента compilation.

person pexxxy    schedule 31.10.2012
comment
Спас мой день. Но проблема в том, что мне нужно удалить зависимые сборки на моей машине разработки web.config и перестроить приложение. - person Joe 89; 11.01.2017