【问题标题】:How we run a .NET 32-bit application in a 64-bit Windows server?我们如何在 64 位 Windows 服务器上运行 .NET 32 位应用程序?
【发布时间】:2010-10-08 11:13:16
【问题描述】:

我们正在我们的一台 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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 清单不存在于 wwwroot 文件夹中。也许出于安全目的。也许我找不到他们。
    • 可能还没有任何清单 - 您可能需要创建它。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      问题的细节有点混乱,但我会赌一把。

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

      【讨论】:

        【解决方案4】:

        一个可行的方法是通过更改目标 CPU 详细信息来确保 .Net 应用程序被标记为真正的 32 位应用程序。

        Visual Studio 2005 中,您可以通过转到项目 Properties 并在 Build 部分设置 Platform目标x86而不是任何APU,这是默认的。

        【讨论】:

        • 当它是第三方应用程序时,这无济于事 - 它不能用 Visual Studio 构建。
        猜你喜欢
        • 2012-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        相关资源
        最近更新 更多