我知道对此有一个先前的问题,还有一个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"));
    }

最佳答案

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

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

This article告诉您如何。

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

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

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

关于c# - 在IISExpress中获取ASP.Net Core关闭触发ApplicationStopping事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41267606/

10-11 01:03