让ASP.Net Core关闭在IISExpress中触发ApplicationStopping事件

Jam*_*nes 25 c# iis-express kestrel-http-server asp.net-core

我知道有一个先前的问题,还有一个GitHub问题:https://github.com/aspnet/Hosting/issues/846似乎从Microsoft.AspNetCore.Server.IISIntegration 1.1解决.但是,尽管有这个版本,这似乎仍然无法在IISExpress中工作(我通过让它执行Debug.WriteLine并在ApplicationStopping和ApplicationStopped上写入日志文件来测试它).我正在使用工具托盘小部件关闭IISExpress.

我不确定我是否做错了,是否以这种方式关闭IISExpress作为'正常关闭'来触发这些事件.看起来这可能在IIS中运行良好,但你无法在本地使用ASP.Net Core和完整的IIS进行开发,所以我想知道是否有任何方法可以在开发环境中触发这些事件进行测试?

这是Startup.cs中的代码:

public void Configure(IApplicationBuilder app, IApplicationLifetime life, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        // other configure code here

        life.ApplicationStopping.Register(() =>
            Debug.WriteLine(">>Stopping"));
        life.ApplicationStopped.Register(() =>
            Debug.WriteLine(">>Stopped"));
    }
Run Code Online (Sandbox Code Playgroud)

小智 6

我的应用程序具有所有最新的NuGet更新,并且可以验证IISExpress下是否未触发ApplicationStopped和ApplicationStopping。ApplicationStarted似乎可以正常工作。

我发现如果您直接在我的开发环境中调用应用程序,一切都很好。

本文告诉您如何。

从下拉框中选择应用很简单:

例

我意识到这与使用IIS Express不同,但是可能会帮助您解决问题。

几乎忘了,要调用它,您需要在启动应用程序时出现的命令窗口中键入Ctrl+ C

  • 对。仅Ctrl + C。当使用窗口的标准[X]关闭控制台窗口时,它显然不会触发。对我来说似乎是一个错误,因为至少在Windows平台上,我从来没有发现任何与控制台关闭事件有关的大问题。 (2认同)