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

时间:2009-02-18 22:27:18

标签: .net web-applications .net-2.0

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

System.BadImageFormatException: is not a valid Win32 application.

我在MSDN论坛上看到,为了修复此错误,我必须将应用程序集构建为32位,这样它就能在64位服务器上正常运行。我查看其他StackOverflow链接Other Posts

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

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

4 个答案:

答案 0 :(得分:4)

一种可能性是应用程序依赖于需要以32位模式运行的非托管DLL。由于默认的“AnyCPU”.NET构建会自动检查平台,因此程序的.NET部分以64位模式启动。这将导致对仅32位非托管DLL的调用失败。

要修复它,您需要创建一个清单文件,告诉应用程序以32位模式运行。我自己从来不需要这样做,所以我无法提供说明,而且谷歌的快速搜索还没有发现任何内容。

[更新]
看看这个链接是否有帮助:
http://msdn.microsoft.com/en-us/library/aa374191.aspx

答案 1 :(得分:3)

我不确定这会有所帮助,但请查看:
http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx

答案 2 :(得分:-1)

问题的细节有点令人困惑,但我会采取行动。

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

答案 3 :(得分:-1)

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

Visual Studio 2005 中,您可以通过转到项目属性并在 Build 部分设置平台来执行此操作将定位到 x86 而不是任何APU ,这是默认设置。