在 ASP.NET 网站中找不到来自不同安装文件夹的 DLL 依赖项

问题描述

我创建了一个带有 WCF 服务的 .NET Framework 4.7.2 网站。要通过此服务公开数据,我必须从 C:\InstallLocation 引用具有 copy Local = False 的第三方 DLL。该网站正在运行时加载此 DLL,但在访问 DLL 中的功能时出现错误,该功能需要它在同一 InstallLocation 文件夹中加载辅助 DLL。我与 Process Monitor 确认 W3WP.exe 正在 C:\InstallLocation 中找到主 DLL,但 W3WP.exe 根本无法在 C:\InstallLocation 中查找辅助 DLL。应用程序错误是预期的,

无法加载文件或程序集“[assembly-info-ommitted]”或其依赖项之一。系统找不到指定的文件

我还在控制台应用程序中测试了完全相同类型的引用,该应用程序正常工作。进程监视器显示了在 C:\InstallLocation 中查找辅助 DLL 的可执行文件

有没有办法配置 .NET Web 应用程序以允许进程在与引用的主 DLL 相同的目录中查找?我尝试了以下但没有(完全)成功:

  • 将 C:\InstallLocation 添加到我的系统路径(并重新启动)。好像没什么影响。我在应用程序启动时验证添加的路径确实出现在 Environment.GetEnvironmentvariable("PATH") 中。
  • 将 C:\InstallLocation 移动到我的网络根目录并尝试
  • 将 C:\InstallLocation 移动到 bin 文件夹并注释掉 .与上述结果相同。
  • 授予应用程序池用户对 C:\InstallLocation 的完全权限。用户:IIS APPPOOL\{网站名称}、IUSR、IIS_IUSRS

编辑

我已经实现了一个初始化程序,如下所示,https://stackoverflow.com/a/16867088/2544926。我已更改代码以检查 C:\InstallLocation 中是否存在 DLL 以从该文件夹加载 DLL。从 Process Monitor 的输出来看,这似乎让我更接近了。但是,我在此过程的后期看到了一个错误。这是我现在看到的错误(多级异常)。

”的类型初始值设定项引发异常。

在导致 C++ 模块无法加载的主要异常之后发生嵌套异常。

”的类型初始值设定项引发异常。

在 vtable 初始化期间无法加载 C++ 模块。

无法加载文件或程序集“XYZ,版本=N.N.N.N.N,Culture=neutral,PublicKeyToken=NNNNNNNNN”或其依赖项之一。系统找不到指定的文件

有趣的是,在我的自定义程序集初始化程序代码中,我看到从 C:\InstallLocation 加载了 XYZ.DLL。此 C++ 模块是否可能尝试以不同方式加载它或以 ASP.NET 不支持的方式加载它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...