20

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

4

3 回答 3

19

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

于 2016-12-14T22:00:38.367 回答
1

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

于 2016-12-14T18:49:35.130 回答
0

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

于 2021-01-05T20:59:23.430 回答