2015-12-14 4 views
3

При использовании DNX (ядро) ASP.NET 5 приложения, метод Configure() можно использовать для подписки на следующие события отмены:ASP.NET 5 DNX: Как правильно закрыть приложение?

IApplicationLifetime::ApplicationStarted 
IApplicationLifetime::ApplicationStopping 
IApplicationLifetime::ApplicationStopped 

Однако, единственный способ, которым я могу видеть банкомат правильно прекратить приложение является вызов

IApplicationLifetime::StopApplication() 

из приложения или нажмите CTRL + C, используя Kestrel и работает в консоли.

Очевидно, целью здесь является размещение приложения в качестве фонового приложения (в идеале, как развертывание облака).

К сожалению, я не смог получить демонстрационное приложение для работы в IIS. При использовании IBM BlueMix я заметил, что события остановки и остановки никогда не запускаются, и, видимо, приложение просто остановлено.

Каков правильный способ справиться с этим? Являются ли эти события ненадежными или я делаю что-то неправильно?

справка приветствуется. Заранее спасибо!

+0

Как IBM BlueMix завершает процесс? Это убивает? –

+1

добавил дополнительную информацию в мой ответ, если это вас интересует. В принципе, ASP.NET использует libuv, и они могут быть ограничены в том, что они делают, если они не fork libuv (не проверял, если это еще не сделано) –

ответ

1

В настоящее время невозможно обнаружить, когда процесс убит.

Существует 2 способа, которые даже будут срабатывать на данный момент.

  1. CTRL-C в окне консоли из Кестрела
  2. The Application в настоящее время расположены.

As far as it seems, у них будет что-то готовое, когда они попадут в RTM.

Что касается того, когда процесс убит, если BlueMix закрывается на окнах, он должен отправить соответствующее событие WM_Close (0x0010) и SIGTERM, если вы находитесь в системе Linux/OSX.

Если BlueMix отправляет SIGKILL, то ничего не может быть сделано о событиях.

LIBUV Update:

Порывшись немного глубже, если у вас есть какой-либо контроль над сигналами, которые посылают, я рекомендую не посылать какие-либо из тех, кто: SIGILL, SIGABRT, SIGFPE, SIGSEGV, SIGTERM и SIGKILL ,

ASP.NET 5 основана на libuv, и они могут быть ограничены SIGINT или SIGHUP прекратить применение, так как libuv не позволит вам справиться с SIGTERM.

+0

Cloud Foundy, на котором базируется Bluemix, запускает приложение Linux и отправки SIGTERM, за которым следует SIGKILL, если приложение не останавливается через 10 секунд. – opiethehokie

Смежные вопросы