如何强制WCF服务应用程序以32位模式运行?

时间:2015-12-23 03:52:39

标签: wcf iis 32-bit

如果在选择了服务的情况下以64位模式直接运行WCF服务应用程序,它可以正常工作,并为我提供默认数据合同。

如果我将应用程序更改为x86并使用x86(不是任何CPU)进行构建 - 并为此应用程序配置IIS 8应用程序池以允许32位 - 它将失败。如何使WCF应用程序以32位工作(它必须是32位,因为它需要是某些传统dll的包装器)。注意:我没有引用DLL或任何东西 - 它只是开箱即用的默认WCF应用程序(不是WCF库)。帮助: - )

1 个答案:

答案 0 :(得分:0)

虽然我不确定为什么它不适用于您的情况,但在64位服务器上以32位模式运行时需要考虑两个问题:

  • 在Visual Studio中设置平台目标:将此设置为x86将强制将目标程序集构建为32位应用程序。如果加载目标程序集的程序集在64位进程中运行,则无法加载程序集
    但是,您不必指定x86以允许在32位进程中加载​​程序集。如果将Any CPU指定为Platform Target,则可以在32位或64位进程中加载​​它。
  • 32位IIS进程:如果您的应用程序作为Web应用程序运行(在IIS应用程序池工作进程中运行),您将希望该工作进程(w3wp.exe)为32-位过程。这可以在应用程序池的高级设置中指定:

    enter image description here

    虽然说“启用”,但它实际上意味着“强制”,这意味着当此设置的值为True时,应用程序池工作进程将始终作为32位进程启动。将其设置为False将启动64位应用程序池工作进程。