让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,但它似乎可以工作。
我们有一个 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,但它似乎可以工作。