Метод Application_end на моем веб-сайте ASP.NET MVC вызывается много раз странно, почти одновременно
Это веб-сайт ASP.NET MVC. Я добавляю некоторый журнал в методе Application_end.
Я знаю, что существуют некоторые обстоятельства, когда будет вызываться Application_end, например, перезапуск пула приложений, изменение файла web.config или изменение файла bin. Но моя проблема здесь очень странная. Метон Application_end на моем веб-сайте ASP.NET MVC вызывается много раз странно, почти одновременно.
Вот мой код:
protected void Application_end()
{
FileLog.Info("The website is starting to quit...", LogType.Info);
PersistentService.RunSignal = false;
//To wait for pesistent action finish
Task.WaitAll(_tasks.ToArray(), 1000 * 300);
FileLog.Info("The website finish quit...", LogType.Info);
}
Как видите, Application_end вызывается 4 раза за одну секунду. Я думаю, это можно назвать один раз, если пул приложений перерабатывается в то время, но почему 4 раза?
Кто-нибудь может помочь? Благодарю.
Изменить: я заметил, что мой пул приложений с 5 рабочих процессов на макс. Будет ли конец каждого рабочего процесса вызывать метод Application_end?
2 ответа
Кажется, что он вызывается, когда заканчивается домен приложения, поэтому может иметь смысл, что он вызывается один раз для процесса:
The Application_Start and Application_End methods are special methods that do not
represent HttpApplication events. ASP.NET calls them once for the lifetime of the
application domain, not for each HttpApplication instance.
Вы используете параметр Maximum Worker Process = 5, который означает, что ваше приложение обслуживает до 5 процессов. Когда IIS сбрасывается, все процессы завершаются одновременно.