我刚刚在App Pool回收之前和之后检查了AppDomain.CurrentDomain.GetAssemblies,看起来就是这种情况。我不明白为什么在第一个实例中加载了一些86个程序集,即当我部署应用程序时,然后在循环之后只加载了28个。
可能会发生什么?
答案 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>());
}