邯郸哪儿做网站便宜,公司变更名称和经营范围,大数据营销网站,建站工具cms点击上方蓝字关注“汪宇杰博客”常言道#xff0c;多喝热水#xff0c;重启试试。有时候当应用工作不正常#xff0c;重启也许能解决问题。但是程序员通常接触不到服务器系统权限。而运维人员和公司流程经常人为制造麻烦阻止我们去重启应用。老实的程序员不善言辞交际#… 点击上方蓝字关注“汪宇杰博客”常言道多喝热水重启试试。有时候当应用工作不正常重启也许能解决问题。但是程序员通常接触不到服务器系统权限。而运维人员和公司流程经常人为制造麻烦阻止我们去重启应用。老实的程序员不善言辞交际只能放弃重启干看代码加班猝死。其实我们可以在代码里给自己留一个重启应用的方法教教他们别惹程序员的道理。IApplicationLifetimeASP.NET Core 有个很牛逼的接口叫做IApplicationLifetime。它能用来处理网站启动后以及停止网站的任务。这个接口提供了3个Cancellation Token允许安排Action委托来处理应用启动和关闭的事件public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime appLifetime){ appLifetime.ApplicationStarted.Register(() { _logger.LogInformation(Moonglade started.); }); appLifetime.ApplicationStopping.Register(() { _logger.LogInformation(Moonglade is stopping...); }); appLifetime.ApplicationStopped.Register(() { _logger.LogInformation(Moonglade stopped.); }); // ... 其他代码}ApplicationStarted 发生在应用启动成功以后也就是Startup.Configure()方法结束后。ApplicationStopped 发生在程序正在完成正常退出的时候所有请求都被处理完成。程序会在处理完这货的Action委托代码以后退出。ApplicationStopping 发生在程序正在执行退出的过程中此时还有请求正在被处理。应用程序也会等到这个事件完成后再退出。我的例子里给这3个事件都记了日志以便观察它们的行为。让网站自尽IApplicationLifetime 除了刚才的3个事件还有一个StopApplication() 方法可以干掉当前的 ASP.NET Core 应用程序。程序自杀的时候会依次执 ApplicationStopping 和 ApplicationStopped 的代码。正是基于这个我们才能做到编程方式重启ASP.NET网站。安排重启动作最方便的重启网站的方式就是访问一个特定的URL啦。以ASP.NET Core MVC网站为例我们可以这样玩依赖注入注入一个IApplicationLifetime到Controller里。比如我博客后台的AdminControllerpublic class AdminController : MoongladeController{ IApplicationLifetime applicationLifetime; public AdminController(MoongladeDbContext context, ILoggerAdminController logger, IOptionsAppSettings settings, IConfiguration configuration, IHttpContextAccessor accessor, IApplicationLifetime appLifetime) : base(context, logger, settings, configuration, accessor) { applicationLifetime appLifetime; } // ...}自杀开关定义一个Action用来停止当前ASP.NET Core网站[HttpGet(blow-me-up)]public IActionResult BlowMeUp(){ applicationLifetime.StopApplication(); return new EmptyResult();}现在只要访问 blow-me-up 这个URL网站就会自杀并且我们能看到正确的日志输出重新启动ASP.NET Core网站特别简单在IIS等host环境下只要发一个新的request就能自动重启也就是重新访问一下我们的网站即可~今天就介绍这些内容。祝大家编程快乐遇到问题先喝热水再重启一定能解决 :)