【问题标题】:How to publish site to Azure without stopping site first如何在不先停止站点的情况下将站点发布到 Azure
【发布时间】:2018-02-21 20:14:11
【问题描述】:

我有一个在 Azure 上运行的网站。

当我从 Visual Studio 发布时,我收到一条错误消息,指出文件正在使用中。

如果我然后停止站点,然后再次发布,然后启动,一切都很好。

但是,我不希望每次对网站进行更新时都必须登录 Azure 并执行此操作。

有没有办法做到这一点?

这是错误信息: 严重性代码 描述 项目文件行抑制状态 错误 Web 部署任务失败。 (Web Deploy 无法修改目标上的文件“GGL.OrderEntry.Data.dll”,因为它被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定, 或在下次发布尝试时为 .Net 应用程序使用 AppOffline 规则处理程序。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE。) GGL.OrderEntry 0

DLL 是解决方案中的一个项目。

【问题讨论】:

  • 它是什么文件?我想这是一个数据文件或类似的东西。一般来说,Azure App Services(即 IIS)不会锁定应用程序文件:aspx、dll 等。如果您有数据文件,请考虑将其存储在其他地方(Blob 存储?)。
  • 有趣,我会进一步检查一下,看看到底是什么被锁定了。
  • 我编辑了问题以显示被锁定的 dll。

标签: visual-studio azure azure-web-app-service


【解决方案1】:

一种方法是将app_offline.htm 文件发布到站点的根目录。如果它看到这样的文件,它会使用 IIS 功能停止应用程序池,这应该释放锁并改为提供此文件。

另一种方法是使用部署槽。您可以停止“暂存”插槽并发布到该插槽。然后进行插槽交换以使其投入生产。这样做的额外好处是减少了用户的停机时间。

不过,部署槽确实需要标准计划。

【讨论】:

  • app_offline.htm - 我不知道这存在。这非常方便,尤其是当您必须将破坏性架构更改部署到数据库并且插槽交换因此不足以进行部署时。感谢您的提示。
  • 发布完成后 app_offline.htm 会自动删除吗?还是我手动删除?
  • 如果我没记错的话,你必须在发布后删除它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多