如何在64位Windows服务器上运行.NET 32位应用程序?

3

我们正在一台64位的Windows服务器上安装第三方应用程序。这个应用程序显然是使用编译器选项设置为在运行时选择平台构建的。当我们运行应用程序时,它会给我们一个错误:

System.BadImageFormatException: is not a valid Win32 application.

我在MSDN论坛上看到,为了解决这个错误,我必须将应用程序设置为32位构建,这样它就可以在64位服务器上正常运行。我查看了其他StackOverflow链接其他帖子

如何避免这种情况?对于想要了解更多信息的人:

  1. 应用程序在32位测试服务器上正常运行。
  2. IIS版本6
  3. 使用SQL Server Express 2005
  4. Web服务扩展中有Framework64\v2.0.50727\aspnet_isapi.dll和Framework\v2.0.50727\aspnet_isapi.dll两个文件。
4个回答

4
一种可能性是应用程序依赖于需要在32位模式下运行的非托管DLL。由于默认的“AnyCPU” .NET构建会自动检查平台,因此程序的.NET部分将以64位模式启动。这将导致对仅支持32位的非托管DLL的调用失败。
要修复它,您需要创建一个清单文件告诉应用程序以32位模式运行。我自己从未需要过这样做,所以我无法提供说明,快速的谷歌搜索也没有(至少还没有)找到任何东西。
[更新]
请看看这个链接是否有帮助:
http://msdn.microsoft.com/en-us/library/aa374191.aspx

清单文件不在wwwroot文件夹中。可能是出于安全考虑,也可能是我找不到它们。 - Geo
可能还没有清单-您可能需要创建它。 - Joel Coehoorn

3

-1

问题的细节有点混乱,但我会尝试解答。

您需要针对运行此代码的网站,在Framework\v2.0.50727\文件夹中找到aspnet_regiis.exe版本。


-1

有一件可能有效的事情是通过更改目标CPU详细信息,确保将.Net应用程序标记为真正的32位应用程序。

Visual Studio 2005中,您可以通过转到项目属性并在生成部分将平台目标设置为x86而不是默认值任何APU来实现此目的。


当涉及到第三方应用程序时,这并没有什么帮助——它无法使用Visual Studio进行构建。 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接