【发布时间】:2019-05-06 19:45:15
【问题描述】:
我使用 Visual Studio Community 2017 中的文件系统在本地发布了一个带有 WCF 服务的小型 Web 应用程序。我在本地托管它以对其进行测试,我注意到单个 WCF 服务未被调用并引发了 System.BadImageFormatException。原因是来自 Int32 类型方法的单个 id 变量。 配置管理器中的解决方案平台是具有任何 CPU 的“混合平台”。所以问题不存在。 通过在应用程序池中启用 32 位应用程序,我遵循了 bluwater2001、here 的解决方案。但是我的问题仍然存在:为什么 32 位变量会导致这样的错误,而我的 Web 应用程序是为任何 cpu 和混合平台构建的?为什么必须在 IIS 的应用程序池中启用 32 位应用程序?
【问题讨论】:
-
“原因是来自 Int32 类型方法的单个 id 变量” - 不。您的应用程序以 64 位运行,并且正在加载一个 32 位的程序集。
-
BadImageFormatException 也必须告诉您它无法加载哪个 dll,使用融合日志查看器查看程序集尝试加载的位置。
-
这真的取决于给你异常的上下文,因为当根本原因不同时,
BadImageFormatException可能会发生。 “所以问题不存在”也不正确。你只检查了自己的项目,但是一个典型的项目可以有多个依赖关系,如果根本原因是位不匹配,所有这些都可能触发此类异常(位不匹配只是可能的根本原因之一,并且可能是最容易理解和排除故障的原因)。因此,请您进行更多调查,并编辑问题以包含完整的异常调用堆栈和其他重要信息。
标签: c# wcf iis application-pool int32