这个问题涉及到一个ASP.NET网站,最初在2005年VS现在在VS 2008托管DLL不能ASP.NET服务器上加载
本网站使用了哪些不是.NET 2个非托管的外部DLL开发而我没有源代码来编译它们,并且必须按原样使用它们。
本网站在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位于网站的bin目录中,以及包装它们的托管DLL以及网站的所有其他DLL。
搜索这个问题揭示了许多其他人似乎有访问来自ASP.NET网站的外部非.NET DLL的相同问题,但我还没有找到可行的解决方案。
我曾尝试以下:
- 运行一方面依赖于检查依赖建立的前三个 在System32目录的路径,最后是在.NET 2 框架。
- 我把这两个DLL及其依赖关系放在 System32中,并重新启动服务器,但网站仍然无法加载这些外部DLL。
- 将ASPNET,IIS_WPG和IUSR(对于该服务器)的权限设置为 网站bin目录并重新启动,但网站仍不能 加载这些外部DLL。
- 将外部DLL作为现有项目添加到项目中,并将其“复制到输出”属性的 设置为“始终复制”,并且网站 仍无法找到这些DLL。
- 还将其“Build Action”属性设置为“嵌入式资源”,并且 网站仍然无法找到该DLL。
对此问题的任何帮助将不胜感激!
下面是一个答案,不需要污染system32文件夹:http://stackoverflow.com/a/4598747/92756 – 2013-07-01 13:17:42
相反,您可以通过添加<在web.config上托管环境shadowCopyBinAsmblies =“false”/>,前提是您不在实时应用程序中修改二进制文件。 – Amit 2015-06-29 22:47:51
因为我忘记了它,我把DLL的一个副本放到了System32中,导致我烧了,然后我的Microsoft.Azure.Documents.ServiceInterop.dll的错误版本被加载,导致我的项目导致奇怪的本地queryRanges尝试连接到数据库时出现[0] .isMinInclusive错误。我的修复最终确保我的本地IIS DefaultAppPool身份是我的本地用户。另请参阅:https://github.com/Azure/azure-documentdb-dotnet/issues/267 – Zachstronaut 2017-06-12 22:03:25