此问题与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。
- 已将ASPNET,IIS_WPG和IUSR(用于该服务器)的全部权限授予网站bin目录并重新启动,但是网站仍然无法加载这些外部DLL。
- 将外部DLL作为现有项目添加到项目中,并将其“复制到输出”属性设置为“始终复制”,网站仍然找不到DLL。
- 还将其“生成操作”属性设置为“嵌入资源”,网站仍然找不到DLL。
任何有关此问题的帮助将不胜感激!