Windows

在 64 位程序中執行 32 位 DLL 的解決方案,反之亦然

  • December 6, 2010

我正在執行 64 位的 windows vista 業務。我有一個使用 C# 用 .NET 編寫的 Web 服務。我還在與 Web 服務通信的網頁上有一個客戶端腳本。這是一個名為“Default.aspx”的 aspx 頁面。我設置了 IIS,並將包含 Web 服務和執行它所需的所有文件(包括 default.aspx 頁面)的 Web 服務文件夾移動到 C:\inetpub\wwwroot。我打開了 IIS 管理器並正確配置了所有內容。我現在收到一條錯誤消息:

試圖載入格式不正確的程序。(來自 HRESULT 的異常:0x8007000B)

有人告訴我,這可能是我的許可證密鑰有問題,應用程序配置為不同的格式,或者某處存在損壞的文件。我的許可證密鑰很好,我不相信有損壞的文件。我認為問題在於我正在嘗試將 32 位 DLL 載入到 64 位程序中,反之亦然。詳細的錯誤資訊如下。如果有人可以給我一個詳細的解決方案,因為我已經給出了詳細的描述,我將非常感激。我整天都在為此掙扎,我很沮喪。請幫我。

異常詳細資訊:System.BadImageFormatException:嘗試載入格式不正確的程序。(來自 HRESULT 的異常:0x8007000B)

源錯誤:

在執行目前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟踪來辨識有關異常起源和位置的資訊。

堆棧跟踪:

$$ BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) $$Luxand.FSDK.ActivateLibrary(String LicenseKey) +0 FaceRecognition._Default.Page_Load(Object sender, EventArgs e) 在 D:\Project Details\Layne Projects\DotNet Project\FaceRecognition\FaceRecognition\Default.aspx.cs:60 System.Web .Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42 System.Web.UI.Control.OnLoad(EventArgs e) +132 System.Web.UI.Control.LoadRecursive() +66 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

在 IIS 7 中,您可以將應用程序池配置為在 32 位模式下執行;當您必須訪問僅適用於 32 位系統的 DLL 時,這非常有用。

您可以修改預設應用程序池的屬性以使您的整個 Web 伺服器在 x86 模式下執行,或者您可以創建一個新的應用程序池,將其配置為 32 位並為其分配特定的網站和/或虛擬目錄。

引用自:https://serverfault.com/questions/112626