Любое приложение, которое генерирует запрос сервера на размещенные ресурсы, можно использовать для прогрева процесса IIS. Сколько именно запросов вам нужно, зависит от того, какие части нужно прогреть. Как правило, прогрев используется для:
- Запуск рабочего процесса. Для этого вам нужно только запросить один ресурс, чтобы прогреть процесс для всего приложения.
- Выполнение статической инициализации, запуска базы данных или предварительного кэширования. Все, что вы делаете в своем файле Global.asax, произойдет, когда вы сделаете свой первый запрос, поэтому, если вы сможете выполнить всю инициализацию, вам все равно нужно будет сделать только один запрос страницы.
- Принудительная предварительная компиляция страниц ASP.NET. Чтобы это произошло, вам нужно попасть на каждую страницу. К счастью, это, как правило, не требует больших затрат времени, поэтому вам не нужно беспокоиться об этом. Если у вас есть отдельные страницы, которые загружаются медленно, вы можете разогреть их отдельно.
Процесс "разогрева" здесь не является чем-то волшебным. Вам просто нужно заставить IIS обслуживать рассматриваемый URL. Все, что вы упомянули, позаботится об этом: использование инструмента стресс-теста для запроса URL-адреса, написание пользовательской утилиты для отправки HTTP-запросов, даже простое создание сценария для инструмента, такого как wget или сценарий PowerShell, для загрузки URL-адресов сделает это. .
Что касается ограничения доступа к localhost, насколько я знаю, в IIS, единственный способ изменить это требует перезагрузки IIS. Вы всегда можете встроить хук перед запросом в свое приложение и поддерживать его там, а ваш процесс разогрева запрашивает какой-то конкретный URL, который переключает это состояние в «открытое». Но я не уверен, что ты достигнешь. Если, так или иначе, пользователь попытался сделать запрос на ваш сайт до того, как закончится разминка, все, что может случиться, это то, что вашему сайту потребуется много времени, чтобы отреагировать, и в итоге он получит запрашиваемую страницу. Если вы заблокировали их вне сайта во время прогрева, они вместо этого получат сетевую ошибку браузера, из-за которой сайт будет отключен, что (для меня) звучит намного хуже.