使用DNX(核心)ASP.NET 5应用程序时,可以使用Configure()方法订阅以下取消事件:
IApplicationLifetime::ApplicationStarted
IApplicationLifetime::ApplicationStopping
IApplicationLifetime::ApplicationStopped
但是,我可以看到ATM正确终止应用程序的唯一方法是调用
IApplicationLifetime::StopApplication()
从应用程序中或使用Kestrel按CTRL + C并在控制台中运行。
显然,此处的目标是将应用程序作为后台应用程序托管(理想情况下是云部署)。
不幸的是,我还没有能够在IIS上运行演示应用程序。 使用IBM BlueMix时,我注意到停止和停止的事件从未被触发,显然应用程序刚刚停止。
处理这个问题的正确方法是什么?这些事件是不可靠的还是我做错了什么?
非常感谢帮助。提前谢谢!
答案 0 :(得分:1)
目前,无法检测到该进程何时被杀死。
到目前为止,有两种方法可以解雇。
Application
。 As far as it seems,当他们点击RTM时,他们会做好准备。
至于进程被杀的时候,如果BlueMix在Windows上关闭,它应该发送正确的WM_Close
(0x0010)事件和SIGTERM
,如果你在Linux / OSX系统下。
如果BlueMix正在发送SIGKILL
,那么就无法对事件做任何事情。
LIBUV更新:
在深入挖掘之后,如果您对发送的信号有任何控制权,我建议您不要发送任何信号:SIGILL
,SIGABRT
,SIGFPE
,{{1 },SIGSEGV
和SIGTERM
。
ASP.NET 5基于libuv,它们可能仅限于SIGKILL
或SIGINT
来终止应用程序,因为libuv不允许您处理SIGHUP
。