Как перезапустить веб-сайт IIS во время публикации веб-сайта .NET Core в Visual Studio? - PullRequest
0 голосов
/ 06 сентября 2018

Я использую Web Deploy в Visual Studio для публикации своего веб-сайта .Net Core. Я часто получаю сообщение об ошибке, потому что некоторые файлы на сервере заблокированы. Ошибка отображается как При публикации произошла ошибка . Я могу обойти эту проблему, остановив и запустив веб-сайт в IIS на сервере.

На моих веб-сайтах ASP.NET MVC я мог публиковать без проблем, потому что Web Deploy вставлял файл обслуживания сайта в корень публикации, что приводило к закрытию сайта IIS. Когда публикация будет завершена, файл обслуживания сайта будет удален, а сайт перезапустится.

Как перезапустить веб-сайт IIS во время публикации веб-сайта .NET Core в Visual Studio?

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете всегда развертывать в новой папке и просто переключать корневую папку работающего сайта. Я делаю это путем создания архива и перемещения этого архива на рабочий сервер и, в конце концов, запускаю сценарий развертывания (powershell). Это не прямое решение вашей проблемы, это просто обходной путь, который может дать вам представление.

Пример сценария powershell для развертывания:

Param(
    [string]$project,
    [string]$archive,
    [string]$config
)

#####################################################################
# Functions
#

function Unzip
{
    Param([string]$fname, [string]$output)
    if ($PSVersionTable.PSVersion.Major -ge 5)
    {
        Expand-Archive $fname $output -Force
    }
    else
    {
        & .\7za.exe x $fname -o"$output" -bb0 -bd -y
    }
}

#####################################################################

$current=(Get-Date).ToString("yyyy.MM.dd")
$base_path="D:"
$backup="$base_path\$project\bak-$current"

echo "Deploying project $project"

echo "Copy new binaries to: $base_path\$project\$current"
Unzip $archive $base_path\$project\$current

echo "Copying new config to: $base_path\$project\$current"
Copy-Item "$config" -Destination "$base_path\$project\$current\" -Force

echo "Creating log folder"
New-Item "$base_path\$project\$current\logs" -type directory -force

echo "Switch IIS physical path for website: $website"
Import-Module WebAdministration
Set-ItemProperty "IIS:\Sites\$website" -Name PhysicalPath -Value "$base_path\$project\$current"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...