我想在不停止服务的情况下更新服务器进程的 dll。我怎么做?
有点像asp.net如何自动拾取放置在bin文件夹中的新dll。
Asp.Net 使用一种称为卷影副本
如果将更新的 dll 复制到应用程序的 bin 子目录中,ASP.NET 运行时会识别出有新代码要执行。由于 ASP.NET 无法将 dll 交换到现有的 AppDomain 中,因此它会启动一个新的 AppDomain。旧的应用程序域是“drain stop”,即允许现有请求完成执行,一旦它们全部完成,AppDomain 就可以卸载。新的 AppDomain 以新代码开始,并开始接受所有新请求。
通常,当 dll 加载到进程中时,进程会锁定 dll,并且您无法覆盖磁盘上的文件。然而,AppDomains 有一个称为卷影复制的功能,允许程序集在磁盘上保持解锁和可替换状态。
运行时初始化 ASP.NET,并为 bin 目录启用卷影复制。在锁定 dll 并将其加载到内存中之前,AppDomain 会将其所需的任何 dll 从 bin 目录复制到临时位置。卷影复制允许我们在更新期间覆盖 bin 目录中的任何 dll,而无需使 Web 应用程序脱机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)