如何在不停止Web服务器的情况下在现有/正在运行的站点上更新ASP.NET Core应用程序?

时间:2016-12-14 16:17:53

标签: iis asp.net-core publish-profiles

我们的测试服务器上运行了一个ASP.NET核心站点,我们希望XCopy自动部署到我们的IIS Web服务器,就像我们现有的应用程序一样,我已经在运行该站点。我已经添加了一个发布配置文件,该网站将该网站打包为" publish-local"解决方案中的目录。每当我尝试复制现有站点时,所有DLL都被另一个进程使用,可能是Kestrel,因此我被迫部署到兄弟目录并重新映射IIS以查看兄弟。如何在不必手动干预和停止Kestrel或IIS Web服务器的情况下更新正在运行的ASP.NET Core站点?

3 个答案:

答案 0 :(得分:11)

使用IIS运行时,您可以将名为app_offline.htm(区分大小写)的文件拖放到应用程序文件夹中。 IIS将停止您的应用程序并将提供app_offline.html文件的内容。现在您可以复制您的应用程序。完成后删除app_offline.html,IIS将启动您的应用。在docsmy post中使用IIS运行Asp.NET核心应用程序时对此进行了描述。

答案 1 :(得分:0)

我们使用的一点欺骗是首先重命名旧文件(类似my.dll.old),然后复制新的dll。然后,您可以强制或等待应用程序池重新启动。

答案 2 :(得分:0)

通常我会备份现有版本。然后我几乎同时回收应用程序域(如果我使用的是 iis)并覆盖根文件夹的全部内容。这样,应用程序会使用新版本的代码重新启动。但它必须非常快,否则可能会出现问题。万一出现任何故障,可以使用备份恢复到原始状态。