【问题标题】:System.BadImageFormatException while self-hosting service自托管服务时发生 System.BadImageFormatException
【发布时间】:2015-11-24 16:21:28
【问题描述】:

我使用了一个 DLL,在 console 应用程序中使用时效果很好。但是当我在自托管 WcfService 中使用它时,它会给出错误System.BadImageFormatException

可能是什么原因,解决方法是什么?

【问题讨论】:

  • 您是否尝试将 64 位 DLL 加载到 32 位进程中,反之亦然?
  • 一切都是 64 位,因为托管项目(代码)和 WcfServiceLibrary 也是同一解决方案的一部分。
  • 它们可以是同一个解决方案的一部分,但为不同的位数而构建。
  • In IIS 7.x, there is a Advanced Settings property of the application pool called "Enable 32-bit Applications"..set that = true 还向我们解释你是如何在参考节点中引用这个DLL 的。设置CopyLocal=true 上周有同样的问题,并确保项目设置AnyCPU
  • 不通过 IIS,自托管,即安装在 URL "http://" + Environment.MachineName + ":1235/AppService"

标签: c# .net wcf dll wcf-binding


【解决方案1】:

最可能的原因是平台目标设置不正确。 DLL 的位数和可执行文件的位数必须匹配,因为您无法将 64 位 DLL 加载到 32 位进程中(反之亦然)。

尝试将 DLL 的平台目标设置为 AnyCPU(请注意,平台目标需要根据构建配置单独设置)。

【讨论】:

  • 一切都是 64 位的,因为托管项目(代码)和 WcfServiceLibrary 也是同一解决方案的一部分。我使用反编译器检查了 dll 的位数,也是 64 位的。
  • "将 DLL 的平台目标设置为 AnyCPU" - 这是一个外部 DLL,我没有构建它。
  • 如果 DLL 是第三方库,那么您需要设置托管服务的平台目标以匹配 DLL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2021-12-18
  • 2011-11-07
  • 1970-01-01
相关资源
最近更新 更多