2012-08-22 20 views
1

我剛檢查AppDomain.CurrentDomain.GetAssemblies之前和應用程序池回收後,它似乎是這種情況。我不明白爲什麼一些86程序集在第一個實例中被加載,即當我部署應用程序,然後在回收之後只加載了28個程序集。應用程序池回收期間是否從應用程序域卸載程序集?

可能是什麼回事?

+0

是專用或共享的應用程序池? – bUKaneer

+0

一個專用的應用程序池。我專門爲有問題的網站創建了一個應用程序池。之前它在與其他約5個網站共享應用程序池時遇到問題,但即使使用專用應用程序池也不提供任何解決方案。 – brumScouse

+1

您是否找到解決問題的方法?如果是,請分享一下嗎? – pinki

回答

1

這是IIS的known behavior。 IIS回收後,程序集按需加載。

如果你想獲得所有可用的組件,你可以在System.Web.Compilation.BuildManager型使用GetReferencedAssemblies方法。

例如:

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