Задача запуска Azure Appcmd, установка preloadEnabled для ВСЕХ сайтов
Хорошо, поэтому я в основном внедряю azure warmups, используя новый модуль инициализации приложений IIS 8.0.
У меня есть задача запуска (cmd файл), которая в основном уже отменяет тайм-аут простоя в IIS и время утилизации. Я пытаюсь добавить к нему инициализацию приложения.
Я понимаю, что мне нужно задать две вещи; startMode
и preloadEnabled
.
Мое приложение имеет множество сайтов в IIS (около 10), все из которых случайно названы Azure с их собственными хаотично названными пулами приложений.
startMode
прост, так как он может быть установлен как пул приложений по умолчанию:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.startMode:AlwaysRunning
Это применимо ко всем пулам приложений.
Однако, это не так просто с preloadEnabled
.
Чтобы установить preloadEnabled
, вы можете использовать это для именованного сайта:
%windir%\system32\inetsrv\appcmd set config -section:sites [name='MySite'].applicationDefaults.preloadEnabled
Но мне нужно, чтобы это было применимо к сайтам ВСЕ, которые я не знаю имени (они случайные), вроде значения по умолчанию (как я установил startMode
).
Любые идеи?
Ответы
Ответ 1
После дня поиска его я наконец получил его. Он в основном использует цикл в appcmd, используя соединение для объединения цепочек команд (вроде как цикл for
). Вот он:
%systemroot%\system32\inetsrv\AppCmd.exe list app /xml | %windir%\system32\inetsrv\appcmd set site /in -applicationDefaults.preloadEnabled:True
Ответ 2
Для тех, кто еще на IIS 7.5:
Ответ 3
Для IIS 8.5
, чтобы установить, preload
на уровне приложения (не на уровне сайта) с помощью appcmd, следует использовать следующую команду.
appcmd set app "Default Web Site/ApplicationName" /preloadenabled:true