【问题标题】:Unable to load assembly error deploying x64 ASP.NET web application部署 x64 ASP.NET Web 应用程序时无法加载程序集错误
【发布时间】:2015-02-02 21:52:21
【问题描述】:

我开发了一个仅包含通用 http 处理程序的 ASP.NET Web 应用程序。 我开始在 x86 开发机器上使用 IISExpress 进行本地测试,然后部署在 32 位 Windows 2003 Server 上并使用 IIS6.0,一切顺利。

我的公司决定更新到 x64 环境,以便利用一些针对 64 位环境优化的第三方库,因此我们切换到 64 位 Windows Server 2012 R2 标准版,但我遇到了一些麻烦。

在我的本地机器上,现在切换到 x64 开发机器,平台目标设置为 x64,一切顺利,但在服务器上部署时,我总是得到 ​​p>

System.BadImageFormatException

在主程序集上。错误消息的其他部分说程序集管理器是由

加载的

C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll

它被执行

C:\Windows\SysWOW64\inetsrv\w3wp.exe

既然 SysWOW64 需要在 64 位环境中运行 32 位应用程序,那么生产机器上的 IIS 服务器可能没有启用运行 x64 网络应用程序? 如果是这样,我应该怎么做才能克服这个问题,因为我知道我没有直接访问服务器的权限。

谢谢。

【问题讨论】:

  • 您在项目中设置了哪些属性 -> 属性...? tell us what the PlatForm Taraget 这听起来像是问题所在
  • 平台目标设置为 x64
  • 要么将其设置为Anyx86,您可以尝试一下并报告更改是否解决了问题
  • 是的。但最后我需要将 Platform Target 设置为 x64 进行编译,因为第三方库以及我们需要使用建议为特定平台编译的 Oracle.Data.Access 的事实。
  • actually I disagree 特别是关于 Oracle .. 我上周遇到了这个问题,我不得不下载 Oracle 的 32 位版本和 .net 的 64 位版本,关于 Oracle 有一个严重的@987654325 @ ...

标签: c# asp.net iis 64-bit badimageformatexception


【解决方案1】:

错误和路径:

C:\Windows\SysWOW64\inetsrv\w3wp.exe

C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll

...绝对证明您要部署到的生产服务器正在以 32 位模式运行其网站应用程序池,或者无论如何肯定是您的。

作为网络托管服务商,出于一系列遗留原因,我们也会这样做。说一说,看看他们是否会将其翻转回本机 64 位模式。

【讨论】:

  • 这是问题所在,应用程序池启用了 32 位模式。
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2015-07-19
  • 2017-09-26
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多