Sha*_*ica 8 iis-7.5 octopus-deploy hangfire
我有一个Web API服务,我正在部署到我的各种环境(使用Octopus Deploy).它应该在启动时执行各种任务,例如运行Entity Framework Code First所需的任何迁移脚本,以及Hangfire管理的一些后台任务.麻烦的是,网站只有在第一次有人打电话时才会醒来.我希望它在我部署后立即运行.我可以通过将Web浏览器指向API的主页来手动完成,但这需要我记住这样做,如果我要部署到多个触角,那么这是一个主要的PITA.
如何在部署后立即强制网站自动启动?
Dan*_*iel 10
在控制面板下打开或关闭窗口功能,在"Web服务器(IIS)| Web服务器|应用程序开发"下,选择"应用程序初始化".
在IIS中,在应用程序池的高级设置上,"启动模式"应设置为"AlwaysRunning".
在IIS中,在站点的高级设置上,"Preload Enabled"应设置为"true".
新部署将导致它再次启动(可能在短暂延迟后).
您可以使用应用程序初始化模块,正如许多答案所提到的那样,但是将PowerShell步骤放入部署中有两个好处......
Write-Output "Starting"
If (![string]::IsNullOrWhiteSpace($TestUrl)) {
Write-Output "Making request to $TestUrl"
$stopwatch = [Diagnostics.Stopwatch]::StartNew()
$response = Invoke-WebRequest -UseBasicParsing $TestUrl -MaximumRedirection 0
$stopwatch.Stop()
$statusCode = [int]$response.StatusCode
If ($statusCode -ge 200 -And $statusCode -lt 400) {
Write-Output "$statusCode Warmed Up Site $TestUrl in $($stopwatch.ElapsedMilliseconds)s ms"
$stopwatch = [Diagnostics.Stopwatch]::StartNew()
$response = Invoke-WebRequest -UseBasicParsing $TestUrl -MaximumRedirection 0
$stopwatch.Stop()
$statusCode = [int]$response.StatusCode
Write-Output "$statusCode Second request took $($stopwatch.ElapsedMilliseconds)s ms"
} Else {
throw "Warm up failed for " + $TestUrl
}
} Else {
Write-Output "No TestUrl configured for this machine."
}
Write-Output "Done"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |