Application_End
это именно то, что вы ищете;Приложение выгружается в соответствии с заданной вами конфигурацией, но по умолчанию оно будет продолжать работать в течение определенного времени бездействия после поступления любых запросов или будет работать, пока запросы постоянно поступают.
Обратите внимание, что другие вещи могут привести к обновлению пула приложений и, следовательно, вызвать Application_End
;определенное количество перекомпиляций (из-за измененных aspx-файлов и т. д.), определенный период времени, определенный уровень нагрузки на память и т. д. Опять же, все они настраиваются, но обычно имеют разумные значения по умолчанию.
Главное, что нужно иметь в виду, это то, что вы можете ожидать, что будет некоторое время между Application_Start
и Application_End
, но вы не можете знать, сколько времени будет, исходя из того, что происходит на сервере.
Также обратите внимание, что при перезапуске пула приложений уже запущенные запросы не останавливаются внезапно и могут фактически перекрываться новыми запросами, обрабатываемыми новым процессом.Это означает, что старый пул приложений End
может называться после нового пула приложений Start
.Но это не должно иметь значения, потому что каждое приложение имеет свой собственный домен приложений и не обменивается данными.(но иногда это может объяснить иначе странное поведение.) И, наконец;даже это настраивается тоже!
РЕДАКТИРОВАТЬ: Еще одна вещь, чтобы добавить!Обратите внимание, что если сервер внезапно отключится, Application_End
будет не вызываться.