【发布时间】: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:添加您的评论作为答案,我会将其标记为正确。