【问题标题】:Issue while deploying asp.net core application using powershell使用 powershell 部署 asp.net 核心应用程序时出现问题
【发布时间】:2018-01-24 22:20:58
【问题描述】:

我有托管在 IIS 中的 ASP.NET Core Web 应用程序。我们还构建了用于使用 Jenkins 进行持续集成的服务器。 Jenkins 从 GitHub 获取最新信息并在本地文件夹中构建和发布项目,然后执行 powershell 脚本将发布的文件夹复制到 Web 服务器。 (它只是使用 Copy-Item 将文件从本地文件夹复制到网络文件夹)

powershell 脚本首先停止remote IIS 网站,然后再复制文件。 (并且我已经确认远程网站在部署之前确实已停止)

但是,我们在复制文件时时不时会出错

Copy-Item : 进程无法访问文件 \\some_ip\_apps\myapp\UI\UI.dll 因为它正在被另一个人使用 过程。

所以我下载了handle 来检查谁在访问网络服务器上的这个文件,结果我发现了它的dotnet.exe

如何远程停止dotnet.exe 或如何使用powershell 远程释放句柄

【问题讨论】:

  • 感觉就像在重新发明轮子。为什么不直接使用Web Deploy 并完成它?
  • 文章说Files in the publish folder are locked when the app is running. Locked files can't be overwritten. To release locked files in a deployment, stop the app pool 所以即使使用 Web Deploy 我也必须手动或使用 PS 停止应用程序池
  • 它还说 Web Deploy 是 PowerShell 的替代品来解锁它们(我已经使用它并且从未遇到过锁定问题)。它是选择 3 个选项之一,而不是全部使用 3 个。

标签: powershell asp.net-core asp.net-core-mvc powershell-3.0 coreclr


【解决方案1】:

我同意其他 cmets 关于使用 WebDeploy 简化您的方法的观点。

就 powershell 而言,Get-ProcessStop-Process 以及正常的远程处理内容可以让您关闭 dotnet.exe。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多