1

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

会发生什么?

4

1 回答 1

1

这是 IIS 的已知行为。IIS 回收后,程序集会按需加载。

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

例如 :

IEnumerable<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();
if (HostingEnvironment.InClientBuildManager)
{
    assemblies = assemblies.Union(BuildManager.GetReferencedAssemblies().Cast<Assembly>());
}
于 2015-06-17T13:16:46.723 回答