C# IIS 7.5修复试图加载格式不正确的程序的问题?

C# IIS 7.5修复试图加载格式不正确的程序的问题?,c#,configuration,build,64-bit,iis-7.5,C#,Configuration,Build,64 Bit,Iis 7.5,我有一个异常问题,抛出一个异常“试图加载一个格式不正确的程序”错误?我在同一台IIS服务器上有两个相同的网站,我的构建配置对其中一个有效,但对另一个无效 我的C#MVC 2 web应用程序可以部署到驻留在同一IIS 7.5 web服务器(x64)上的两个网站。一个是live站点(使用发布配置部署),第二个是beta站点(使用专为此项目创建的新beta配置部署)。这两个项目的代码库是相同的。它们具有不同的生成配置,但配置中的设置是相同的 将发布配置部署到默认网站/my_应用程序可以完美工作 将be

我有一个异常问题,抛出一个异常“试图加载一个格式不正确的程序”错误?我在同一台IIS服务器上有两个相同的网站,我的构建配置对其中一个有效,但对另一个无效

我的C#MVC 2 web应用程序可以部署到驻留在同一IIS 7.5 web服务器(x64)上的两个网站。一个是live站点(使用发布配置部署),第二个是beta站点(使用专为此项目创建的新beta配置部署)。这两个项目的代码库是相同的。它们具有不同的生成配置,但配置中的设置是相同的

将发布配置部署到默认网站/my_应用程序可以完美工作

将beta配置部署到beta/my_应用程序部署时,但当我加载站点(任何页面)时,会出现格式不正确的异常

我无法理解为什么使用完全相同的配置设置部署会适用于一个网站而不适用于另一个网站(在同一个Web服务器上)。我的服务器+开发人员计算机是64位的,两个网站都有相同的应用程序池设置(.NET 4,集成)

如何查找/修复此问题?最好不必为每个站点设置不同的配置。最好不必更改发布配置,因为这是可行的,我不想冒险更改它

这两个网站是:

Default Website/my_app
Beta/my_app
版本的configuration manager具有以下设置:

configuration manager for beta具有完全相同的设置:

例外情况是:

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

我已经看到有很多关于“试图加载格式不正确的程序”的问题,但我不认为这是重复的。这是一种独特的情况,配置在一个站点上可以正常工作,但在另一个站点上不能正常工作,使用相同的配置设置和两个站点的相同Web服务器。

发现了问题-解决方案是配置两个应用池:

  • 默认网站/my_应用程序使用DefaultAppPool,其中启用32位应用程序为TRUE
  • Beta/my_app->BetaAppPool正在使用启用32位应用程序为FALSE
将BetaAppPool更改为将Enable 32位应用程序设置为TRUE已修复此问题


@Rick找到了这个问题的解决方案:

当您使用Cassini运行此应用程序时会发生什么?只是为了补充这个答案-我还检查了web应用程序,确保它可以在64位上运行,然后在两个应用程序池上将Enable 32位应用程序设置为false-它可以工作,性能更好!我在看,但结果只是这个设置。。。谢谢为什么他们(.net)不说存在32-64位不匹配的问题呢。谢谢