【问题标题】:BadImageFormatException 0x8007000B only on Windows Server 2012 R2BadImageFormatException 0x8007000B 仅在 Windows Server 2012 R2 上
【发布时间】:2019-04-17 05:46:19
【问题描述】:

我有一个包含 32 位 DLL 的 ASP.NET 3.5 应用程序。它在 Windows XP、7 和 10 上运行良好(并且已经运行多年)。我正在添加对 Windows 2012、2012 R2 和 2016 的支持。它适用于 2016,但不适用于 2012 R2。

第一次调用 DLL 时,出现以下错误:

BadImageFormatException: 试图加载一个带有 格式不正确。 (HRESULT 异常:0x8007000B)

所有测试过的操作系统都使用相同的构建和安装脚本。每个操作系统都在同一台机器上的虚拟机上,因此所有操作系统的硬件都是相同的。对于每个操作系统:

  • 操作系统已全面更新。
  • vcredist 9.0 (x86) 作为安装的一部分安装。
  • IIS DefaulatAppPool 已启用 32 位应用程序。

我已经尝试了我在这个问题上找到的帖子中的所有建议,但没有任何效果。有什么想法吗?

【问题讨论】:

  • 在任务管理器中仔细检查您的应用程序的 W3WP.exe 进程是否正在运行 32 位,并且实际上是默认应用程序池正在尝试加载 DLL
  • 已设置为 RootApp。将其更改为 DefaultAppPool 并且可以正常工作。这是我检查的第一件事。不知道发生了什么。谢谢!
  • Rich-Lang:添加您的评论作为答案,我会将其标记为正确。

标签: iis windows-server-2012


【解决方案1】:

在任务管理器中仔细检查您的应用程序的 W3WP.exe 进程是否正在运行 32 位,并且实际上是默认应用程序池正在尝试加载 DLL。此错误消息几乎可以肯定意味着 64 位进程试图加载 32 位 DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多