为什么32位值导致WCF系统BadImageFormatException?

时间:2018-12-05 09:22:47

标签: c# wcf iis application-pool int32

我在Visual Studio Community 2017中使用文件系统在本地发布了带有WCF服务的小型Web应用程序。我在本地托管了该Web应用程序以对其进行测试,我注意到未调用单个WCF服务并引发了System.BadImageFormatException。原因是来自Int32类型的方法的单个id变量。 Configuration Manager中的解决方案平台是带有任何CPU的“混合平台”。因此问题不存在。 通过在应用程序池中启用32位应用程序,我遵循了bluwater2001 here的解决方案。但是我的问题仍然存在:为什么我的Web应用程序是为任何cpu和混合平台构建的,但32位变量会导致这种错误?为什么需要在IIS的应用程序池中启用32位应用程序?

1 个答案:

答案 0 :(得分:0)

这与变量/参数的类型无关。

如果选择AnyCPU,则您的代码可以在任何平台上运行。它将在32位计算机上编译为32位代码,并在64位计算机上编译为64位代码。

如果程序集以32位进程运行,则无法加载64位程序集,反之亦然。如果尝试加载与该过程不匹配的程序集,则会收到BadImageFormatException。