Как app_offline.htm, остановка сайта IIS и остановка пула приложений влияют на текущие запущенные потоки? - PullRequest
3 голосов
/ 03 августа 2011

Если я:

  • положить app_offline.html в корень сайта
  • остановка сайта IIS 7.5
  • остановка пула приложений IIS 7.5

Что происходит с текущими запущенными потоками (во всех трех случаях), включая фоновые потоки? Все они немедленно прерваны, или им разрешено завершить?

Спасибо

Andrew

Ответы [ 3 ]

7 голосов
/ 03 августа 2011

При добавлении app_offline.htm приложение отправляет Application_End и после возврата этой функции остальные потоки программы уничтожаются.Максимальное время ожидания возврата Application_End задается в настройках пула.

Если вы остановите полный пул, то все сайты в этом пуле будут следовать той же процедуре.Если вы открываете только app_offline.htm, то затрагивает только этот сайт.

Чтобы избежать прерывания ваших потоков этим отключением, установите состояние ожидания на Application_End

void Application_End(object sender, EventArgs e) 
{
    // This is a custom function that you must make and
    //   check your threads in the program
    MyTheadClass.WaitForAllMyThreadsToExist();

    // after this function exit the rest of the threads are killed.
}

Еще одинnote.

Все время, пока вы ожидаете на Application_End, чтобы ваши потоки выходили из состояния ожидания (возможно, мьютекса), сайт больше не принимает веб-соединения и кажется, что он не отвечает.Поэтому вы должны как можно быстрее завершить свои потоки, когда получите это сообщение.

0 голосов
/ 20 декабря 2012

Просто отметив, что имя файла должно быть app_offline.htm. Использование app_offline.html не будет работать!

0 голосов
/ 03 августа 2011

Когда добавлен app_offline.html:

На основании этой статьи от ScottGu говорится, что домен приложения выгружен.И на основе этой статьи все фоновые потоки останавливаются, когда домен приложения выгружается и создается исключение ThreadAbortException.

Я не уверен, что остановлю сайт, но остановка пула приложений должна иметь тот же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...