这个问题涉及到一个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与封装它们的托管DLL和网站的所有其他DLL一样,位于网站的bin目录中。
搜索此问题显示,许多其他人似乎都有从ASP.NET网站访问外部非.NET DLL的同样问题,但我还没有找到有效的解决方案。
我已经尝试过以下方法:
- 运行DEPENDS工具来检查依赖项,确定前三个文件在路径的System32目录中,最后一个文件在.NET 2框架中。
- 将这两个DLL及其依赖项放入System32并重新启动服务器,但网站仍然无法加载这些外部DLL。
- 将ASPNET、IIS_WPG和IUSR(该服务器)的完全权限授予网站bin目录,并重新启动,但网站仍然无法加载这些外部DLL。
- 将外部DLL添加为项目的现有项,并将其“复制到输出”属性设置为“始终复制”,但网站仍然找不到这些DLL。
- 还将它们的“生成操作”属性设置为“嵌入资源”,但网站仍然找不到这些DLL。
如果您能提供关于此问题的帮助,将不胜感激!