【问题标题】:ASP.NET P/Invoke "An attempt was made to load a program with an incorrect format"ASP.NET P/Invoke“试图加载格式不正确的程序”
【发布时间】:2010-11-11 23:46:49
【问题描述】:

我有一个 P/Invokes 32 位 DLL 的 ASP.NET 应用程序。

当我将它部署在 64 位服务器上时,我收到错误“尝试加载格式不正确的程序”。

然后我按照here 给出的说明将 IIS 配置为运行 32 位。仍然得到同样的错误。

这可能是什么问题?

【问题讨论】:

    标签: asp.net pinvoke


    【解决方案1】:

    这仅允许 32 位应用程序运行,但它不会让任何东西真正在32 位模式下运行。

    要使用 32 位 dll,您的 Web 应用程序必须以 32 位模式运行,这是通过将 IIS 切换为以 32 位模式运行来完成的。但是,这可能实际上是不可能的,具体取决于服务器上运行的其他 Web 应用程序,因为 所有 Web 应用程序必须在 32 位模式下运行。您链接到的页面上有一个链接,其中包含有关在 32 位模式下运行 IIS 的影响的更多信息。

    如果您无法在 32 位模式下运行 IIS,则需要 64 位版本的 dll 才能使用它。

    【讨论】:

    • @Guffa 如何切换 IIS 以在 32 位模式下运行?
    • @smkngspcmn:在此处查看“ASP.NET 2.0,32 位版本”:support.microsoft.com/kb/894435/en-gb
    • @Guffa:这样做,并没有真正帮助。不幸的是,64 位版本的 DLL 不可用。我在某处读过关于将目标平台设置为 x86 而不是任何平台的项目编译。这对我也不起作用,但问题可能出在这些方面吗?
    • @smkngspcmn:在什么方面没有帮助?它失败了,还是你不能使用它?将目标更改为 x86 适用于桌面应用程序,但不适用于 IIS 决定其运行方式的 Web 应用程序。
    • @Guffa:我开始在 32 位模式下运行 IIS 并得到同样的错误。
    猜你喜欢
    • 2014-01-11
    • 1970-01-01
    • 2016-05-17
    • 2012-05-01
    • 2014-02-10
    • 2015-10-13
    • 1970-01-01
    • 2012-11-02
    • 2019-01-14
    相关资源
    最近更新 更多