这个问题与一个 ASP.NET 网站有关,最初在 VS 2005 中开发,现在在 VS 2008 中开发。
该网站使用两个非托管外部 DLL,它们不是 .NET,我没有编译它们的源代码,必须按原样使用它们。
该网站在 Visual Studio 中运行良好,可以正确定位和访问这些外部 DLL。但是,当网站发布在网络服务器(运行 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 与包装它们的托管 DLL 以及网站的所有其他 DLL 一起位于网站的 bin 目录中。
搜索这个问题显示许多其他人似乎在从 ASP.NET 网站访问外部非 .NET DLL 时遇到同样的问题,但我还没有找到有效的解决方案。
我尝试了以下方法:
- 运行 DEPENDS 检查依赖关系,确定前三个在路径中的 System32 目录中,最后一个在 .NET 2 框架中。
- 我将这两个 DLL 及其依赖项放在 System32 中并重新启动服务器,但网站仍然无法加载这些外部 DLL。
- 授予网站 bin 目录的 ASPNET、IIS_WPG 和 IUSR(对于该服务器)的完全权限并重新启动,但网站仍然无法加载这些外部 DLL。
- 将外部 DLL 作为现有项目添加到项目中,并将其“复制到输出”属性设置为“始终复制”,网站仍然找不到 DLL。
- 还将他们的“构建操作”属性设置为“嵌入式资源”,网站仍然找不到 DLL。
任何有关此问题的帮助将不胜感激!