【发布时间】: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