我正在使用反射来获取要在容器中注册的类型集合。
问题是,在IIS 7.5应用程序池回收或IISRESET
之后,并非所有程序集都可以通过反射来获取。
如果没有通过bin文件夹并在每个DLL上进行程序集加载,有什么方法可以解决这个问题吗?
更新
我正在使用AppDomain.Current.GetAssemblies()
来检索所有已加载的程序集。
答案 0 :(得分:0)
问题解决了。
请勿使用AppDomain.CurrentDomain.GetAssemblies()。
相反,请使用
System.Web.Mvc.BuildManager.GetReferencedAssemblies()
只有quirk是.GetReferencedAssemblies()传回ICollection(对象),你需要将它转换为Assembly然后使用。
感谢大家的帮助。
Edit- Credit to Dominic Pettifer - “AppDomain.CurrentDomain.GetAssemblies()被认为是武装和极其危险” http://www.dominicpettifer.co.uk/Blog/44/how-to-get-a-reference-to-all-assemblies-in-the--bin-folder?replyId=357
确实
Tripple Edit。不是AppDomain.CurrentDomain.GetReferencedAssemblies()。使用System.Web.Mvc。
中的BuildManager类