<#
.SYNOPSIS
Sets the required settings in the applicationHost.config file for an application to be able to automatically
initialize.
.PARAMETER WebSitePath
The name of the web application that's to have it's settings configured for application warmup.
.PARAMETER RestartService
A switch to indicate that the W3SVC (IIS) service should be restarted after the change.
#>
function Set-WebApplicationInitialization
{
[CmdletBinding(SupportsShouldProcess = $true)]
Param(
[Parameter(Mandatory = $true)][ValidateNotNullOrEmpty()][string] $WebSitePath,
[Parameter(Mandatory = $false)][switch] $RestartService
)
$pathElements = $WebSitePath.Split('/')
$site = $pathElements[0]
$appSubPath = @($pathElements | select -Skip 1) -join '/'
$webApp = Get-WebApplication -Site $site -Name $appSubPath
if ($webApp -eq $null)
{
throw "Failed to find application '$appSubPath' under web site '$site'"
}
if ($PSCmdlet.ShouldProcess($WebSitePath, "Update application to use Application Initialization settings"))
{
$appPoolPath = "IIS:\AppPools\$($webApp.applicationPool)"
Set-ItemProperty -Path $appPoolPath -Name 'autoStart' -Value 'true'
Set-ItemProperty -Path $appPoolPath -Name 'startMode' -Value 'AlwaysRunning'
Set-ItemProperty -Path $appPoolPath -Name 'processModel.idleTimeout' -Value '00:00:00'
$applicationPath = "IIS:\Sites\$($WebSitePath)"
Set-ItemProperty -Path $applicationPath -Name 'preloadEnabled' -Value $true
Write-Verbose "Updated properties for web application '$appSubPath' running on pool '$($webApp.applicationPool)'"
if ($RestartService.ToBool())
{
if ($PSCmdlet.ShouldProcess("W3SVC", "Restart web service"))
{
Restart-Service W3SVC
}
}
}
}
Thursday, July 14, 2016
Configuration a web application for Application Warmup in IIS
Further to one of my previous blog posts about how to configure an ASP.NET web application for Application Initialization (warmup), here's the follow up: a powershell script for configuring the corresponding IIS application for warmup:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment