ASP.NET 5 DNX:如何正确关闭应用程序?

时间:2015-12-14 16:30:19

标签: asp.net .net ibm-cloud dnx .net-core

使用DNX(核心)ASP.NET 5应用程序时,可以使用Configure()方法订阅以下取消事件:

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

但是,我可以看到ATM正确终止应用程序的唯一方法是调用

IApplicationLifetime::StopApplication()
从应用程序中

或使用Kestrel按CTRL + C并在控制台中运行。

显然,此处的目标是将应用程序作为后台应用程序托管(理想情况下是云部署)。

不幸的是,我还没有能够在IIS上运行演示应用程序。 使用IBM BlueMix时,我注意到停止和停止的事件从未被触发,显然应用程序刚刚停止。

处理这个问题的正确方法是什么?这些事件是不可靠的还是我做错了什么?

非常感谢帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

目前,无法检测到该进程何时被杀死。

到目前为止,有两种方法可以解雇。

  1. Kestrel控制台窗口中的CTRL-C
  2. 正在处理Application
  3. As far as it seems,当他们点击RTM时,他们会做好准备。

    至于进程被杀的时候,如果BlueMix在Windows上关闭,它应该发送正确的WM_Close(0x0010)事件和SIGTERM,如果你在Linux / OSX系统下。

    如果BlueMix正在发送SIGKILL,那么就无法对事件做任何事情。

    LIBUV更新:

    在深入挖掘之后,如果您对发送的信号有任何控制权,我建议您不要发送任何信号:SIGILLSIGABRTSIGFPE,{{1 },SIGSEGVSIGTERM

    ASP.NET 5基于libuv,它们可能仅限于SIGKILLSIGINT来终止应用程序,因为libuv不允许您处理SIGHUP