让IIS加载用于从指定目录读取配置的dll

Get IIS to load dlls used for reading config from a specified directory

我们有一个 classic ASP 服务,它通过调用传入 COM 对象名称的 CreateObject 来加载 .net com 对象。然后这个 COM 对象通过一个纯托管的 class & dll 的名称来加载和激活,这是通过反射完成的。这些 classes 都位于一个特定的文件夹中,并且都没有问题。

激活此 .NET 实例后,它会使用配置提供程序读取一些配置 class。配置如下所示:

<configuration>
  <configSections>
    <section name="FilesConfiguration" type="Company.Configuration.XmlSerializerSectionHandler, Company.Configuration"/>
  </configSections>
  <FilesConfiguration>
      <RootFolder>\Server\Path\</RootFolder>
  </FilesConfiguration> 
  ....
  </configuration>

由于配置是针对 w3wp.exe 我们使用外部配置文件 (Company.Configuration.dll.config) 并将配置 reader 设置为 outlined here.

问题是配置声称无法加载配置提供程序 class Company.Configuration,即使它与我们刚刚动态加载的程序集位于同一文件夹中。

当我打开融合日志记录时,它正在尝试从

加载它
C:/Windows/SysWOW64/inetsrv/

如果我把它放在那里,它就可以正常加载。

所以我的问题是,如何让 IIS 查看其他所有内容所在的文件夹,并且它在尝试加载配置提供程序时很高兴找到?

所以我们通过将处理程序连接到 AppDomain.CurrentDomain.AssemblyResolve 事件并手动加载程序集来解决这个问题。

我还不清楚为什么我们的解析器被触发了,但是找不到dll,但它似乎可以工作。