ASP.NET 5 DNX:如何正确关闭应用程序?
ASP.NET 5 DNX: How to shutdown application properly?
使用 DNX(core) ASP.NET 5 应用程序时,Configure() 方法可用于订阅以下取消事件:
IApplicationLifetime::ApplicationStarted
IApplicationLifetime::ApplicationStopping
IApplicationLifetime::ApplicationStopped
但是,我可以看到 ATM 正确终止应用程序的唯一方法是调用
IApplicationLifetime::StopApplication()
在应用程序中或在控制台中使用 Kestrel 和 运行ning 按 CTRL+C。
显然这里的目标是将应用程序托管为后台应用程序(理想情况下作为云部署)。
遗憾的是,我无法在 IIS 上获得 运行 的演示应用程序。
使用 IBM BlueMix 时,我注意到从未触发停止和停止事件,显然应用程序刚刚停止。
处理这个问题的正确方法是什么?这些事件是不可靠还是我做错了什么?
非常感谢您的帮助。提前致谢!
目前无法检测进程何时被终止。
目前 even 有两种触发方式。
- Kestrel
控制台 window 中的 CTRL-C
- 正在处理
Application
。
As far as it seems,他们会在点击 RTM 时准备好东西。
至于进程何时被终止,如果 BlueMix 在 windows 关闭,它应该发送正确的 WM_Close
(0x0010) 事件和 SIGTERM
如果您处于 Linux/OSX系统。
如果 BlueMix 正在发送 SIGKILL
,则无法对事件执行任何操作。
LIBUV 更新:
深入挖掘后,如果您可以控制发送的信号,我建议您不要发送任何信号:SIGILL
、SIGABRT
、SIGFPE
、SIGSEGV
、SIGTERM
和 SIGKILL
.
ASP.NET 5 基于 libuv,它们可能限于 SIGINT
或 SIGHUP
以终止应用程序,因为 libuv 不允许您处理 SIGTERM
。
使用 DNX(core) ASP.NET 5 应用程序时,Configure() 方法可用于订阅以下取消事件:
IApplicationLifetime::ApplicationStarted
IApplicationLifetime::ApplicationStopping
IApplicationLifetime::ApplicationStopped
但是,我可以看到 ATM 正确终止应用程序的唯一方法是调用
IApplicationLifetime::StopApplication()
在应用程序中或在控制台中使用 Kestrel 和 运行ning 按 CTRL+C。
显然这里的目标是将应用程序托管为后台应用程序(理想情况下作为云部署)。
遗憾的是,我无法在 IIS 上获得 运行 的演示应用程序。 使用 IBM BlueMix 时,我注意到从未触发停止和停止事件,显然应用程序刚刚停止。
处理这个问题的正确方法是什么?这些事件是不可靠还是我做错了什么?
非常感谢您的帮助。提前致谢!
目前无法检测进程何时被终止。
目前 even 有两种触发方式。
- Kestrel 控制台 window 中的 CTRL-C
- 正在处理
Application
。
As far as it seems,他们会在点击 RTM 时准备好东西。
至于进程何时被终止,如果 BlueMix 在 windows 关闭,它应该发送正确的 WM_Close
(0x0010) 事件和 SIGTERM
如果您处于 Linux/OSX系统。
如果 BlueMix 正在发送 SIGKILL
,则无法对事件执行任何操作。
LIBUV 更新:
深入挖掘后,如果您可以控制发送的信号,我建议您不要发送任何信号:SIGILL
、SIGABRT
、SIGFPE
、SIGSEGV
、SIGTERM
和 SIGKILL
.
ASP.NET 5 基于 libuv,它们可能限于 SIGINT
或 SIGHUP
以终止应用程序,因为 libuv 不允许您处理 SIGTERM
。