我在Visual Studio Community 2017中使用文件系统在本地发布了带有WCF服务的小型Web应用程序。我在本地托管了该Web应用程序以对其进行测试,我注意到未调用单个WCF服务并引发了System.BadImageFormatException。原因是来自Int32类型的方法的单个id变量。 Configuration Manager中的解决方案平台是带有任何CPU的“混合平台”。因此问题不存在。 通过在应用程序池中启用32位应用程序,我遵循了bluwater2001 here的解决方案。但是我的问题仍然存在:为什么我的Web应用程序是为任何cpu和混合平台构建的,但32位变量会导致这种错误?为什么需要在IIS的应用程序池中启用32位应用程序?
答案 0 :(得分:0)
这与变量/参数的类型无关。
如果选择AnyCPU,则您的代码可以在任何平台上运行。它将在32位计算机上编译为32位代码,并在64位计算机上编译为64位代码。
如果程序集以32位进程运行,则无法加载64位程序集,反之亦然。如果尝试加载与该过程不匹配的程序集,则会收到BadImageFormatException。