【问题标题】:How to automate deployment of Blazor Server app如何自动部署 Blazor Server 应用程序
【发布时间】:2020-11-05 04:04:29
【问题描述】:

有没有办法自动部署 Blazor Server 应用程序?该应用程序保持与服务器端 DLL 的连接打开,这迫使我们登录服务器并在复制修改后的文件之前手动停止站点。我们尝试使用 PowerShell 停止该站点,但它仍然使 DLL 处于锁定状态。只有通过 IIS 面板手动停止才能解锁文件。

【问题讨论】:

  • 在 ASP.NET Core 6 中,DLL 没有被锁定,所以你可以更新它们
  • 这似乎是一个实验性功能,不能保证它会进入发布版本。

标签: .net asp.net-core .net-core blazor blazor-server-side


【解决方案1】:

您必须停止 AppPool,而不是网站。以下是我们使用的 PowerShell 脚本(这些脚本恰好是从 Octopus 部署中调用的,因此它们使用替换变量 ($AppName) 作为 AppPool 名称,但您应该明白要点)。

预部署:

# Load IIS module
Import-Module WebAdministration

# Stop the app pool if not already stopped
if ((Get-WebAppPoolState($AppName)).Value -ne "Stopped") {
    Write-Output "Stopping IIS app pool $AppName"
    Stop-WebAppPool $AppName
}

部署后:

# Load IIS module
Import-Module WebAdministration

# Start the app pool
Start-WebAppPool $AppName

【讨论】:

    【解决方案2】:

    如果您将 app_offline.htm 放置在 Web 根目录中,apppool 将停止并且 dll 解锁。

    【讨论】:

    • 理论上是的。在实践中,许多人报告说 app_offline.htm 方法取得了零星的成功。有关示例,请参阅this GitHub issue thread。就个人而言,我们发现在部署文件之前使用脚本显式停止 AppPool 更为可靠。它为我们工作了 100% 的时间。
    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2021-07-21
    • 2021-06-20
    • 1970-01-01
    • 2020-09-13
    • 2011-09-25
    • 2020-01-05
    • 2014-11-08
    相关资源
    最近更新 更多