【问题标题】:BadImageFormatException in WCF ContextWCF 上下文中的 BadImageFormatException
【发布时间】:2011-08-20 09:57:39
【问题描述】:

我的场景如下(Win7、VS2010、.NET 4.0):

我有一个外部公司为“任何 CPU”编译的 .NET 程序集(使用 corflags.exe 验证)。该程序集也从外部公司加载本机 dll。这个原生 dll 有两个版本 - x86 和 x64。我都有。

当我创建控制台应用程序时,添加 .NET 程序集(同时确保 .NET 程序集可以找到其中一个本机 DLL),从该 .NET 库中创建一个类的实例并启动程序一切正常。

但是,当我在 WCF 服务中执行完全相同的步骤时,我得到了 BadImageFormatException。现在显而易见的是在目标平台中搜索错误(我尝试了“Any CPU”、“x86”、“x64”)或尝试交换本机 DLL(我尝试了 x86 和 x64),但这无济于事.顺便说一句,我尝试了所有组合...

有人知道问题可能是什么吗?

拉尔斯

P.S.:我读过BadImageFormatException encountered with WcfSvcHost and IIS WCF host,正如作者所说,他通过将 WcfSvcHost.exe 标记为 32BIT 解决了类似的问题,但 WcfSvcHost.exe 的名称很强大,所以我不能辞职。不知道他是怎么做到的……

【问题讨论】:

    标签: wcf native target platform badimageformatexception


    【解决方案1】:

    您可以删除对 WcfSvcHost 的依赖,并在本地 IIS 中托管/调试服务,您可以在其中将 AppPool 显式设置为 32 位或 64 位。这就是我要做的。

    【讨论】:

    • 是的,这是一种解决方法,对我有用,谢谢!有趣的是,我无法让它与 WcfSvcHost 一起使用......
    • 有人可以透露更多细节吗?我找不到更改此 AppPool 设置的位置。在我的 IIS 管理器中,转到高级设置,查看选择了 DefaultAppPool 的应用程序池。但其他三个选项是:Classic .NET AppPool、ASP.NET v4.0、ASP.NET v4.0 Classic。那么哪一个意味着 32 或 64?
    猜你喜欢
    • 2020-10-08
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多