IIS7未加载程序集
问题描述:
我正在使用反射来拾取要在容器中注册的类型集合。IIS7未加载程序集
问题是,在IIS 7.5应用程序池回收或IISRESET
后,并非所有组件都可以通过反射拾取。
任何方式来解决这个问题,而无需通过bin文件夹,并做每个DLL上的程序集加载?
更新:
我使用AppDomain.Current.GetAssemblies()
检索加载的所有组件。
答
问题解决。
请勿使用AppDomain.CurrentDomain.GetAssemblies()。
相反,使用
System.Web.Mvc.BuildManager.GetReferencedAssemblies()
只有怪癖是.GetReferencedAssemblies()传回的ICollection(对象),你需要转换为大会然后与合作。
谢谢大家的帮助。
编辑 - 幸得多米尼克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类。
我认为有一种方法可以使用配置文件中的部分来引用程序集;这可能会导致程序集加载。我快速地看了一眼,找不到我正在寻找的东西,但如果这样的特征存在,那么这个评论可能会帮助人们记住一些内存。 – 2011-03-23 04:27:14
用于编译的'assemblies'元素可能会产生一些影响http://msdn.microsoft.com/en-us/library/bfyb45k1.aspx通过使程序集足够已知被加载用于反射。我还没有尝试重新创建你的情况并使用这个元素。 – 2011-03-23 04:38:50