在应用程序池中,回收是从应用程序域卸载的程序集吗?

时间:2012-08-22 16:20:17

标签: asp.net iis-7 assemblies appdomain

我刚刚在App Pool回收之前和之后检查了AppDomain.CurrentDomain.GetAssemblies,看起来就是这种情况。我不明白为什么在第一个实例中加载了一些86个程序集,即当我部署应用程序时,然后在循环之后只加载了28个。

可能会发生什么?

1 个答案:

答案 0 :(得分:1)

它是IIS的known behavior。 IIS回收后,按需加载程序集。

如果您想获取所有可用的程序集,可以使用GetReferencedAssemblies类型的System.Web.Compilation.BuildManager方法。

例如:

IEnumerable<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();
if (HostingEnvironment.InClientBuildManager)
{
    assemblies = assemblies.Union(BuildManager.GetReferencedAssemblies().Cast<Assembly>());
}