在 64 位进程中运行 32 位 DLL 或反之亦然的解决方案

在 64 位进程中运行 32 位 DLL 或反之亦然的解决方案

我运行的是 Windows Vista Business 64 位版。我有一个使用 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:尝试加载格式不正确的程序。 (来自 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包括StagesAfterAsyncPoint)+2428

答案1

在 IIS 7 中,您可以将应用程序池配置为在 32 位模式下运行;当您必须访问仅适用于 32 位系统的 DLL 时,这非常有用。

您可以修改默认应用程序池的属性以使整个 Web 服务器以 x86 模式运行,或者您可以创建一个新的应用程序池,将其配置为 32 位并为其分配特定的网站和/或虚拟目录。

相关内容