IIS Alaways Running Setting With AppCmd (IIS Folder)

2024-01-10

筆記如何使用 AppCmd 進行 IIS 的站台相關的 Always Running, Auto Start, PreloadEnabled 等設定,讓應用程式或相關程式 (如 Hangfire) 可以如期排程執行。

logo

說明

相關的 Always Running, Auto Start, PreloadEnabled 的設定都會儲存到 applicationHost.config,路徑如下:

%systemroot%\system32\inetsrv\config\

如果要使用 AppCmd.exe 路徑如下:

%systemroot%\system32\inetsrv\
REM 集區的進階設定 啟動模式(Start Mode) 設定為 AlwaysRunning
appcmd.exe set apppool /apppool.name:apppoolName /startMode:AlwaysRunning

appcmd.exe set apppool /apppool.name:apppoolName /autoStart:true

REM 集區的進階設定 閒置逾時(idle Timeout) 設定為 0
appcmd.exe set apppool /apppool.name:apppoolName /processModel.idleTimeout:00:00:00

REM 集區的進階設定 閒置逾時動作(idleTimeoutAction) 設定為 Suspend
appcmd.exe set apppool /apppool.name:apppoolName /processModel.idleTimeoutAction:Suspend

REM 站台的進階設定 預先載入(preloadEnabled) 設定為 true
appcmd.exe set app "Default Web Site/apppoolName" /preloadEnabled:true

applicationHost.config

<system.applicationHost>
    <applicationPools>
        <add name="apppoolName" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated"
            startMode="AlwaysRunning">
            <processModel identityType="ApplicationPoolIdentity" idleTimeout="00:00:00" idleTimeoutAction="Suspend" />
        </add>
    </applicationPools>
    <sites>
        <site name="Default Web Site" id="1" serverAutoStart="true">
            <application path="/apppoolName" applicationPool="apppoolName" preloadEnabled="true">
                <virtualDirectory path="/" physicalPath="D:\WebSites\apppoolName"/>
            </application>
        </site>
    </sites>
</system.applicationHost>