为了能够关闭后台进程(用Quartz.Net实现),我需要检测AspNet5 beta8中的Web应用程序关闭。在以前版本的Asp.Net中,可以在Application_End上执行代码。什么是AspNet5中的Application_End事件的等价物?
到目前为止,我在Configure中尝试了IApplicatonLifetime,但是当我停止Web应用程序时它不会触发:
public void Configure(IApplicationBuilder app, IApplicationLifetime lifetime)
{
lifetime.ApplicationStopping.Register(() =>
{
Logger.LogInformation("Application Stopping. Do stuff.");
});
lifetime.ApplicationStopped.Register(() =>
{
Logger.LogInformation("Application Stopped. Do stuff.");
});
}
我在ApplicationStopping和ApplicationStopped上都没有得到任何回复。
答案 0 :(得分:4)
我尝试过旧版本(beta5)并且您的代码运行正常。 ApplicationStopping和ApplicationStopped在使用IIS Express并正常停止站点时触发。
似乎在beta8更改后,IIS中的这些事件存在问题。 Beta8 changed IIS hosting所以它使用HttpPlatformHandler来启动dnx进程。不幸的是,似乎没有收到关机事件,请参阅the issue(目前没有关于此问题的详细信息)。
我在我的机器上尝试过beta8,问题似乎仅限于IIS:
ApplicationStarted
事件(即使优雅地停止网站)。dnx web
,则会触发3个事件。有几种方法可以使用dnx命令运行项目: