我刚刚在应用程序池回收之前和之后检查了 AppDomain.CurrentDomain.GetAssemblies,看起来就是这种情况。我不明白为什么在第一个实例中加载了一些 86 个程序集,即当我部署应用程序时,然后在回收后只加载了 28 个程序集。
会发生什么?
我刚刚在应用程序池回收之前和之后检查了 AppDomain.CurrentDomain.GetAssemblies,看起来就是这种情况。我不明白为什么在第一个实例中加载了一些 86 个程序集,即当我部署应用程序时,然后在回收后只加载了 28 个程序集。
会发生什么?
这是 IIS 的已知行为。IIS 回收后,程序集会按需加载。
如果要获取所有可用的程序集,可以在类型上使用GetReferencedAssemblies
方法。System.Web.Compilation.BuildManager
例如 :
IEnumerable<Assembly> assemblies = AppDomain.CurrentDomain.GetAssemblies();
if (HostingEnvironment.InClientBuildManager)
{
assemblies = assemblies.Union(BuildManager.GetReferencedAssemblies().Cast<Assembly>());
}