64位ASP.NET MVC应用程序将无法运行

时间:2012-12-07 15:36:55

标签: asp.net-mvc iis 64-bit badimageformatexception

首先,我之前设法让我的64位测试网络应用程序之一在这台机器上运行(当我为这个项目进行原型设计时)。我已经在32位工作了几个星期,并意识到我需要将应用程序切换到64位,当我做(在项目中将目标平台设置为x64)并重新部署时,它停止运行。

我上次花了好几天才得到64位工作,而且我不确定这次我上次错过了什么。

我正在IIS下发布并调试。

我收到BadImageFormatException并显示消息:“无法加载文件或程序集'GEMS.Web'或其依赖项之一。尝试加载格式不正确的程序。”

此应用程序引用64位和32位程序集。我在IIS中的应用程序池中将“启用32位应用程序”设置为true。

我正在使用在64位Win 7计算机上运行的VS.NET 2012,IIS 7.5。

以下内容来自装配负载跟踪:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Windows\SysWOW64\inetsrv\w3wp.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = XXXXXX\xxxxxx
LOG: DisplayName = GEMS.Web
 (Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: GEMS.Web | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/inetpub/wwwroot/GEMS.Web/
LOG: Initial PrivatePath = c:\inetpub\wwwroot\GEMS.Web\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\inetpub\wwwroot\GEMS.Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/gems.web/eea5792e/72317e39/GEMS.Web.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/gems.web/eea5792e/72317e39/GEMS.Web/GEMS.Web.DLL.
LOG: Attempting download of new URL file:///c:/inetpub/wwwroot/GEMS.Web/bin/GEMS.Web.DLL.
ERR: Failed to complete setup of assembly (hr = 0x8007000b). Probing terminated.

2 个答案:

答案 0 :(得分:5)

使用以下方法更改IIS以处理64位处理:工具|选项|项目和解决方案|网站项目|使用64位版本的IIS Express

答案 1 :(得分:3)

如果您没有使用任何本机Win32库,则应该为程序集定位Any CPU,而不要弄乱IIS中的启用32位应用程序设置(将其保留为false)