aspnet应用程序无法在Windows10 / iis10中加载不受管理的dll

问题描述 投票:0回答:1

我有一对aspnet C#应用程序,它们调用一个非托管的dll(用Delphi编写)。这些应用程序安装在IIS上。当两个应用程序中的任何一个尝试调用非托管dll时,都会报告以下错误(在两种情况下均为相同的错误):

“无法加载DLL'dllName.dll':动态链接库(DLL)初始化例程失败。(HRESULT的异常:0x8007045A)“

以下是有关应用程序的一些详细信息:

  • 仅需说明:Web应用程序是完全独立的:每个应用程序都单独安装在iis服务器上,每个应用程序都有自己的非托管dll副本。
  • 应用程序使用Microsoft Web安装项目安装在iis上。
  • VS版本:VS2015
  • 仅Windows 10 / iis 10会发生错误
  • 使用dotnet v4.0用C#编写的aspnet应用程序
  • 一个应用程序是用aspnet webforms框架编写的,另一个应用程序是用aspnet MVC4框架编写的。
  • 应用程序已使用'any cpu'选项进行编译
  • 非托管DLL是使用32位Delphi编译器编译的
  • 这些应用程序可在其他Windows版本上正常运行(已验证ws2008,ws2012,win7,win8,ws2003,winvista)
  • 两个应用程序在调用非托管dll时都抛出相同的错误。
  • 用于运行应用程序的应用程序池启用了“启用32位应用程序”选项(这是必需的,因为使用32位编译器编译的非托管dll)
  • 已经尝试在Visual Studio中使用'x86'选项编译应用程序。仍然出现错误。

关于如何调试此问题或可能的解决方案的任何想法?谢谢!

c# asp.net delphi iis dll
1个回答
0
投票

在IIS中运行32位delphi DLL的先决条件是:

启用32Bits应用程序在站点AppPOOL中,如下面的波纹图所示。enter image description here

您的c#项目需要编译为x86 Plataform

最终解决了我的问题的是,将应用程序bin目录中的borlndmm.dll与所有其他C#项目DLL一起复制了]]

© www.soinside.com 2019 - 2024. All rights reserved.