Конечная цель - сделать так, чтобы каждый раз, когда мой пул приложений перезагружается (что должно происходить всякий раз, когда я выпускаю обновление для сайта), мой сайт посещался один раз для «разогрева». Обычно первое посещение после перезагрузки занимает 2,5 секунды, а последующие посещения - всего 0,5 секунды, поэтому его необходимо посещать один раз после каждого обновления. Я хотел бы автоматизировать это, и, похоже, функция инициализации приложений Windows - это способ сделать это.
Проблема в том, что, когда эта функция включена, после перезапуска пула приложений (или перезапуска чего-либо) я не вижу никаких журналов доступа для посещения моего сайта. Похоже, что функция инициализации приложения вообще не работает. Я не вижу ошибок в журнале системных событий или каких-либо способов устранения неполадок.
Вот среда:
Вот что я настроил (используя Инициализация приложения IIS 8.0 руководство):
system.webServer/applicationInitialization
раздел:
Исправление проблем:
system.webServer/applicationInitialization
раздел, а также переместив его в web.configglobalModules
В разделе файла applicationHost.config это было, но я просмотрел эту папку, и она пуста. Я ожидал, что там будут файлы dll, включая warmup.dll:<add name="ApplicationInitializationModule" image="%windir%\System32\inetsrv\warmup.dll" />
Похоже, что должна быть некоторая несовместимость между функцией инициализации приложения IIS и сайтами ASP.NET Core 3.1, потому что она вообще не работает и, похоже, нет никакого способа устранить неполадки.
Поэтому я решил полностью отказаться от внутреннего хостинга IIS и вместо этого разместить Kestrel внутри службы Windows Service Worker.
Если ваш веб-сайт использует базу данных, возможно, проблема в том, что соединение с базой данных в большинстве случаев выполняется только по первому запросу, проверки версии базы данных также выполняются в это время, что вы можете сделать, если для этого потребуется пока убедитесь, что сразу после перезагрузки соединение все еще активно, если оно не активно, запускайте его с пулом, это должно помочь.
(автоматический переводчик, не обращайте внимания на орфографические ошибки)