У меня есть веб-приложение ASP.NET Core, размещенное в IIS. У нас также есть сервер сборки, используемый для непрерывной интеграции с использованием Jenkins. Дженкинс получает последнюю версию GitHub, создает и публикует проект в локальной папке, а затем выполняет сценарий PowerShell, чтобы скопировать опубликованную папку на веб-сервер. (он просто копирует файлы из локальной папки в сетевую с помощью Copy-Item)
Сценарий powershell сначала останавливает remote
веб-сайт IIS перед копированием файла. (и я подтвердил, что удаленный веб-сайт действительно остановлен перед развертыванием)
Однако время от времени мы получаем ошибку при копировании файлов.
Copy-Item: процесс не может получить доступ к файлу
\\some_ip\_apps\myapp\UI\UI.dll
, потому что он используется другим процессом.
Итак, я загрузил дескриптор, чтобы проверить, кто обращается к этому файлу в Интернете. сервер, и я оказался его dotnet.exe
Как мне остановить dotnet.exe
удаленно или как отпустить дескриптор удаленно с помощью powershell
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
, поэтому даже с веб-развертыванием мне приходится вручную или с помощью PS останавливать пул приложений - person LP13   schedule 25.01.2018