我有一个Web应用程序,它根据数据库配置条目动态加载程序集,以执行某些操作(动态插件样式体系结构)。
对象的调用是在Factory Pattern实现中,并且对象被缓存(在工厂内的静态字典中<>),因为调用可以在一分钟内完成数千次。
对此工厂的调用来自主Web应用程序和许多Web服务,其中一些位于不同的程序集/项目中。
当我需要更新其中一个DLL时,我必须回收IIS以释放DLL。
由于这会对服务器上的其他应用程序产生影响,我想知道是否有一种方法可以在不重新启动IIS的情况下释放DLL?
答案 0 :(得分:2)
除了杀死AppDomain之外,绝对没有办法卸载加载的程序集,这基本上就是你在重新启动IIS时所做的事情。
答案 1 :(得分:1)
您可以尝试重新启动应用程序池而不是整个IIS服务器。也许这会为你做到这一点
答案 2 :(得分:1)
如果你有一个需要加载和卸载的程序集,你将不得不跳过几个环。
请参阅http://www.west-wind.com/presentations/dynamicCode/DynamicCode.htm以获得详细介绍。它有点过时并处理动态生成的代码,但鉴于您的代表我会假设您可以提取相关信息。