项目
版本

为什么我的程序集在 IIS 重启后没有被扫描?

有时你希望使用 程序集扫描 功能来加载 IIS 托管应用中的插件。

当在 IIS 中托管应用程序时,应用程序首次启动时所有程序集都会加载到 AppDomain 中。然而,当 IIS 重新编译 AppDomain 时,这些程序集将只在需要时加载。

要解决这个问题,请使用 System.Web.Compilation.BuildManager 类上的 GetReferencedAssemblies() 方法获取引用的程序集列表:

var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>();

这会迫使引用的程序集立即加载到 AppDomain 中,从而使它们可供模块扫描使用。

或者,而不是使用 AppDomain.CurrentDomain.GetAssemblies() 进行扫描,手动从文件系统加载程序集。手动加载会强制它们进入 AppDomain,然后你可以开始扫描。

在本文档中