【问题标题】:How do I restart an IIS Website during publishing of a .NET Core website in Visual Studio?在 Visual Studio 中发布 .NET Core 网站期间如何重新启动 IIS 网站?
【发布时间】:2018-09-05 23:31:10
【问题描述】:

我在 Visual Studio 中使用 Web Deploy 来发布我的 .Net Core 网站。我经常收到错误,因为服务器上的某些文件被锁定。错误显示为发布遇到错误。我可以通过在服务器上的 IIS 中停止和启动网站来解决此问题。

在我的 ASP.NET MVC 网站上,我可以毫无问题地发布,因为 Web Deploy 会将站点维护文件插入到发布的根目录中,这会导致 IIS 关闭站点。发布完成后,站点维护文件将被删除,网站将重新启动。

在 Visual Studio 中发布 .NET Core 网站期间如何重新启动 IIS 网站?

【问题讨论】:

标签: visual-studio iis .net-core


【解决方案1】:

您可以始终部署在新文件夹中,只需切换运行站点的根文件夹即可。 为此,我创建了一个存档并将此存档移动到生产服务器,然后运行部署脚本 (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"

【讨论】:

    猜你喜欢
    • 2021-04-16
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多