WCF上下文中的BadImageFormatException

WCF上下文中的BadImageFormatException,wcf,native,target,platform,badimageformatexception,Wcf,Native,Target,Platform,Badimageformatexception,我的场景如下(Win7、VS2010、.NET 4.0): 我有一个外部公司为“任何CPU”编译的.NET程序集(用corflags.exe验证)。此程序集也从外部公司加载本机dll。此本机dll有两个版本-x86和x64。我两个都有 当我创建控制台应用程序时,添加.NET程序集(同时确保.NET程序集可以找到一个本机DLL),从该.NET库中创建一个类的实例,然后启动程序,一切正常 然而,当我在WCF服务中执行完全相同的步骤时,我得到了一个BadImageFormatException。现在最

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

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

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

然而,当我在WCF服务中执行完全相同的步骤时,我得到了一个BadImageFormatException。现在最明显的是在目标平台中搜索错误(我尝试了“任意CPU”、“x86”、“x64”)或尝试交换本机DLL(我尝试了x86和x64),但这没有帮助。我尝试了所有的组合

有人知道问题出在哪里吗

拉尔斯


注:我读到,正如作者所说,他通过将WcfSvcHost.exe标记为32位解决了类似的问题,但WcfSvcHost.exe是强名称,所以我不能放弃它。不确定他是如何让它工作的…

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

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

是的,这是一个解决办法,对我来说很有用,谢谢!有趣的是,虽然我不能让这个与WcfSvcHost一起工作…有人能透露更多关于这个的细节吗?我找不到更改此应用程序池设置的位置。在“我的IIS管理器”中,转到“高级设置”,查看选择了DefaultAppPool的应用程序池。但其他三个选项是:Classic.NET AppPool、ASP.NET v4.0、ASP.NET v4.0 Classic。那么,哪一个是32还是64?是的,这是一个解决办法,对我来说很有用,谢谢!有趣的是,虽然我不能让这个与WcfSvcHost一起工作…有人能透露更多关于这个的细节吗?我找不到更改此应用程序池设置的位置。在“我的IIS管理器”中,转到“高级设置”,查看选择了DefaultAppPool的应用程序池。但其他三个选项是:Classic.NET AppPool、ASP.NET v4.0、ASP.NET v4.0 Classic。那么哪一个是32还是64?