Подтвердить что ты не робот

IIS 7.5 Fixing Была предпринята попытка загрузить программу с неправильной проблемой формата?

У меня есть необычная проблема, бросающая исключение "Была сделана попытка загрузить ошибку с неправильным форматом?" У меня есть два одинаковых веб-сайта на одном сервере IIS, и моя конфигурация сборки работает для одного из них, но не для другого.

Мое веб-приложение С# MVC 2 может быть развернуто на два веб-сайта, которые находятся на одном и том же веб-сервере IIS 7.5 (x64). Один из них - живой сайт (развернутый с использованием конфигурации Release), второй - бета-сайт (развернутый с использованием новой конфигурации бета-версии, созданной именно для этого проекта). Кодовая база для обоих проектов одинакова. Они имеют разные конфигурации компоновки, но настройки внутри конфигураций идентичны.

Развертывание конфигурации выпуска на веб-сайте по умолчанию /my _app отлично работает.

Развертывание бета-конфигурации для развертывания бета-версии/my_app, но когда я загружаю сайт (любую страницу), я получаю неправильное исключение формата.

Я не понимаю, почему развертывание с одинаковыми настройками конфигурации будет работать на одном веб-сайте, но не на другом (на том же веб-сервере). Мои серверные + dev машины имеют 64 бит, и оба веб-сайта имеют одинаковые настройки пула приложений (.NET 4, интегрированные).

Как я могу найти/исправить эту проблему? Предпочтительно без необходимости иметь разные настройки конфигурации для каждого сайта. И желательно без необходимости изменять конфигурацию релиза, так как это работает, и я не хочу рисковать его изменением.

Два веб-сайта:

Default Website/my_app
Beta/my_app

Менеджер конфигурации для выпуска имеет следующие настройки:

release build configuration

Менеджер конфигурации для бета имеет те же настройки:

beta build configuration

Исключение составляет:

Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. 
An attempt was made to load a program with an incorrect format.

Stack Trace:

[BadImageFormatException: Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192
   System.Reflection.Assembly.Load(String assemblyString) +35
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123

[ConfigurationErrorsException: Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11479520
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +484
   System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +334
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1087

[HttpException (0x80004005): Could not load file or assembly 'MyApp.Domain.Model' or one of its dependencies. An attempt was made to load a program with an incorrect format.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11612256
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4842149

Я видел, что в SO много вопросов: "Была сделана попытка загрузить программу с неправильным форматом", но я не считаю, что это дубликат. Это уникальная ситуация, когда конфигурация работает нормально на одном сайте, но не на другом, используя те же настройки конфигурации и тот же веб-сервер для обоих.

4b9b3361

Ответ 1

Обнаружена проблема. Решение в том, как настроены два AppPools:

  • Default Website/my_app использует DefaultAppPool, где Enable 32-bit applications имеет значение TRUE
  • Beta/my_app → BetaAppPool использует Enable 32-разрядные приложения FALSE

Изменение BetaAppPool для установки Включить 32-разрядные приложения в TRUE устранило эту проблему.

Решение было найдено @Rick по этому вопросу: С# Entity Framework 4 Common Language Runtime обнаружила неверную ошибку программы?

Ответ 2

У вас есть dll x86, который удаляется в вашем месте развертывания x64.

Не делай этого. Это не работает.