2011-05-06 40 views
1

我的方案是如下(Win7的,VS2010,.NET 4.0):BadImageFormatException在WCF语境

我有来自外部公司编制了 “任何CPU”(与corflags.exe验证).NET程序集。该程序集也从外部公司加载本机dll。这个本地DLL存在两个版本 - x86和x64。我有两个可用。

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

但是,当我遵循WCF服务中完全相同的步骤时,我得到一个BadImageFormatException。现在显而易见的是在目标平台(我尝试过“任何CPU”,“x86”,“x64”)或试图交换本地DLL(我尝试x86和x64)中搜索错误,但这并不起作用。我尝试所有组合btw ...

有没有人有一个想法是什么问题可能是什么?

拉尔斯

P.S:我读BadImageFormatException encountered with WcfSvcHost and IIS WCF host和撰文指出,他通过corflagging WcfSvcHost.exe为32BIT解决了类似的问题,但WcfSvcHost.exe是强命名,所以我不能辞职了。不知道他是如何工作的...

回答

1

您可以放弃对WcfSvcHost的依赖关系,并在本地IIS中主持/调试服务,您可以在其中明确地将AppPool设置为32或64位。这就是我要做的。

+0

是的,这是一个解决方法,为我做的伎俩,thx!有趣的是,虽然我不能得到这个与WcfSvcHost一起工作... – larsbeck 2011-05-07 17:58:49

+0

有人可以摆脱一些这方面的更多细节?我无法找到更改此AppPool设置的位置。在我的IIS管理器中,转到高级设置,选择DefaultAppPool选中的应用程序池。但其他三个选项是:Classic .NET AppPool,ASP.NET v4.0,ASP.NET v4.0 Classic。那么哪一个意味着32或64? – newman 2011-11-29 02:21:59