Метод Application_end на моем веб-сайте ASP.NET MVC вызывается много раз странно, почти одновременно - PullRequest
0 голосов
/ 25 сентября 2018

Это веб-сайт 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);
    }

ЗдесьЭто мой журнал результатов: enter image description here

Как видите, Application_end вызывается 4 раза в одну и ту же секунду.Я думаю, это можно назвать один раз, если пул приложений перерабатывается в то время, но почему 4 раза?

Может ли кто-нибудь помочь?Спасибо.

Редактировать: я заметил, что мой пул приложений состоит из 5 рабочих процессов в макс.Будет ли конец каждого рабочего процесса вызывать метод Application_end?enter image description here

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Кажется, что он вызывается, когда заканчивается домен приложения, поэтому может иметь смысл, что он вызывается один раз для процесса:

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.

С https://msdn.microsoft.com/en-us/library/ms178473.aspx

0 голосов
/ 25 сентября 2018

Вы используете параметр Максимальный рабочий процесс = 5 , что означает, что до 5 процессов обслуживают ваше приложение.После сброса IIS все процессы завершаются одновременно.

...