这个问题与ASP有关.NET网站,最初开发于VS 2005,现在开发于VS 2008.

这个网站使用了两个非.NET的非托管外部DLL,我没有编译它们的源代码,只能按原样使用它们.

此网站在Visual Studio内运行良好,可以正确定位和访问这些外部DLL.但是,当网站在Web服务器(运行IIS6和ASP.NET 2.0)而不是在开发PC上发布时,它无法定位和访问这些外部DLL,并且我收到以下错误:

Unable to load DLL 'XYZ.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

外部DLL位于网站的bin目录中,以及包装它们的托管DLL和网站的所有其他DLL.

搜索此问题会发现,许多其他人似乎在从ASP.NET网站访问外部非.NET DLL时遇到了同样的问题,但我还没有找到有效的解决方案.

我试过以下几种方法:

  • 运行依赖于判断依赖项,以确定前三个
  • 我将两个DLL及其依赖项放在 System32并重新启动了服务器,但网站仍然 无法加载这些外部DLL.
  • 将ASPNET、IIS_WPG和IUSR(用于该服务器)的全部权限授予
  • 将外部DLL作为现有项添加到项目中并设置 其"复制到输出"属性为"始终复制",以及网站 仍然找不到DLL.
  • 还将其"Build Action"属性设置为"Embedded resource",并

任何关于这个问题的帮助都将不胜感激!

推荐答案

try 将DLL放入\System32\Inetsrv目录.这是Windows Server上IIS的工作目录.

如果这不起作用,请try 将DLL放在System32目录中,将依赖项文件放在Inetsrv目录中.

Asp.net相关问答推荐

Razor 页面客户端站点验证不起作用

在 AppConfig.json 中存储对象的最佳方式

创建项目 ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 有什么区别

ReportViewer 控件 - 高度问题

jquery 1.9.0 和 modernizr 无法使用 ASP.NET Web 优化框架进行缩小

返回 JSON 对象 (ASP.NET WebAPI)

如何判断 IIS 是处于 32 位还是 64 位模式

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

在 Asp.net Rowcommand 事件中获取行索引

在使用网络服务器加载它们之前,如何编译 Asp.Net Aspx 页面?

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

Razor 主机工厂错误

使用 ASPNet_Regiis 加密自定义配置部分 - 你能做到吗?

如何使用 asp.net 获取 html Select 的选定值

如何将枚举类型绑定到 DropDownList?

与 Twitter Bootstrap Bundle 的 ASP.NET MVC4

.Net System.Mail.Message 添加多个收件人地址

解耦 ASP.NET MVC 5 标识以允许实现分层应用程序

为什么 IFormFile 显示为空,我该如何解决?

如何在 ASP.NET 响应中传递大文件?