【问题标题】:How to listen Control-C pressed? (Server Closing not Copy at client side)如何听 Control-C 按下? (服务器关闭而不是在客户端复制)
【发布时间】:2016-12-22 19:47:31
【问题描述】:

我想在按下 Control-C 时做一些清理工作?如何在 Asp .Net Core Web Api App 中实现这一点?

我只是想在应用程序关闭时将一些日志消息写入文本文件。

【问题讨论】:

  • asp.net 用于 Web 应用程序.. 你的意思是 .net 核心控制台应用程序吗?
  • 完全不清楚您想要做什么或为什么。请提供更多详细信息。
  • 您无法使用Asp.NET Core 或任何其他Asp.NET 框架实现此目的。 Control - C 显然是键盘输入。所以你需要在客户端实现这个 - javascript可能
  • @Fabio,我不是指客户端的 Ctrl-C(Copy),而是服务器端的 Ctrl-C 来中断进程。有没有办法听这个?

标签: c# .net asp.net-core


【解决方案1】:

您可以在应用程序退出时(通过控制台上的Ctrl-C)通过IApplicationService.ApplicationStoppingStartup.cs 中注册要由ASP.NET Core 调用的函数:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ....
    var applicationLifetime = app.ApplicationServices.GetRequiredService<IApplicationLifetime>();
    applicationLifetime.ApplicationStopping.Register(OnShutdown);
    ....
}

private void OnShutdown()
{
    Console.WriteLine("Goodbye!");
}

当你运行它时(使用dotnet run):

Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

输入Ctrl-C,你应该会看到:

^CGoodbye!

【讨论】:

    【解决方案2】:

    因为 ASP.NET Core 是针对网站的,所以你可以用 jQuery 来做这件事。

    见:How to detect Ctrl+V, Ctrl+C using JavaScript?

    【讨论】:

    • 我不是说在客户端检测 Ctrl-C。我的意思是服务器端的 Ctrl-C,它关闭了 ASP.NET 应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 2013-01-18
    相关资源
    最近更新 更多