首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

appsettings.json变更后如何重启ASP.NET Core5.0网站?

在ASP.NET Core 5.0中,可以通过以下几种方式来重启网站以应用appsettings.json的变更:

  1. 手动重启:在开发环境下,可以通过停止并重新启动网站来应用appsettings.json的变更。可以在开发工具(如Visual Studio)中停止网站,然后再次启动它。或者,可以在命令行中使用dotnet run命令来启动网站,并在需要时停止并重新运行该命令。
  2. 使用IHostApplicationLifetime接口:在ASP.NET Core中,可以使用IHostApplicationLifetime接口来监视应用程序的生命周期,并在配置文件变更时触发网站的重启。可以在Startup.cs文件中的ConfigureServices方法中添加以下代码:
代码语言:txt
复制
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
services.AddSingleton<IHostedService, AppSettingsChangeWatcher>();

然后,创建一个名为AppSettingsChangeWatcher的类,实现IHostedService接口,并在其StartAsync方法中监听appsettings.json文件的变更,并在变更时重启网站。以下是一个示例:

代码语言:txt
复制
public class AppSettingsChangeWatcher : IHostedService
{
    private readonly IConfiguration _configuration;
    private readonly IHostApplicationLifetime _appLifetime;
    private readonly FileSystemWatcher _fileWatcher;

    public AppSettingsChangeWatcher(IConfiguration configuration, IHostApplicationLifetime appLifetime)
    {
        _configuration = configuration;
        _appLifetime = appLifetime;

        _fileWatcher = new FileSystemWatcher
        {
            Path = AppContext.BaseDirectory,
            Filter = "appsettings.json",
            NotifyFilter = NotifyFilters.LastWrite,
            EnableRaisingEvents = true
        };

        _fileWatcher.Changed += OnAppSettingsChanged;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        _fileWatcher.Changed -= OnAppSettingsChanged;
        _fileWatcher.Dispose();
        return Task.CompletedTask;
    }

    private void OnAppSettingsChanged(object sender, FileSystemEventArgs e)
    {
        // 重启网站
        _appLifetime.StopApplication();
    }
}
  1. 使用Microsoft.Extensions.Configuration.ReloadOnChange方法:ASP.NET Core提供了一个方便的方法来自动重新加载配置文件。可以在Startup.cs文件的ConfigureServices方法中使用ReloadOnChange方法来实现自动重启。以下是一个示例:
代码语言:txt
复制
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"))
    .ReloadOnChange(true);

使用此方法,当appsettings.json文件发生变更时,配置将自动重新加载,并且网站将自动重启以应用新的配置。

以上是在ASP.NET Core 5.0中应用appsettings.json变更并重启网站的几种方法。请注意,这些方法适用于开发环境下的网站重启,对于生产环境的网站,可能需要使用其他方式来实现配置的动态更新和重启。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

    上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表。不知道你有没有跟着敲下代码,千万不要做眼高手低的人哦。这篇文章我们就会设计一些复杂的概念了,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等。俗话说,授人以鱼不如授人以渔,所以文章旨在带着大家分析源码,让大家能知其然更能知其所以然。为了偷懒,继续使用上篇文章的例子了!有兴趣的朋友可以加群637326624相互交流! 再次感谢张队的审稿!

    02

    .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

    上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表。不知道你有没有跟着敲下代码,千万不要做眼高手低的人哦。这篇文章我们就会设计一些复杂的概念了,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等。俗话说,授人以鱼不如授人以渔,所以文章旨在带着大家分析源码,让大家能知其然更能知其所以然。为了偷懒,继续使用上篇文章的例子了!有兴趣的朋友可以加群637326624相互交流!

    00

    [ASP.NET Core 3框架揭秘] 配置[2]:读取配置数据[下篇]

    [接上篇]提到“配置”二字,我想绝大部分.NET开发人员脑海中会立即浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个XML格式的文件之中。到了.NET Core的时代,很多我们习以为常的东西都发生了改变,其中就包括定义配置的方式。总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源。我们可以采用内存的变量作为配置的数据源,也可以将配置定义在持久化的文件甚至数据库中。在对配置系统进行系统介绍之前,我们先从编程的角度来体验一下全新的配置读取方式。

    04

    .Net Core 自定义配置源从配置中心读取配置

    配置,几乎所有的应用程序都离不开它。.Net Framework时代我们使用App.config、Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再熟悉不过了。然而到了容器化、微服务的时代,这些本地文件配置有的时候就不太合适了。当你把本地部署的服务搬到docker上后,你会发现要修改一个配置文件变的非常麻烦。你不得不通过宿主机进入容器内部来修改文件,也许容器内还不带vi等编辑工具,你连看都不能看,改都不能。更别说当你启动多个容器实例来做分布式应用的时候,一个个去修改容器的配置,这简直要命了。 因为这些原因,所以“配置中心”就诞生了。配置中心是微服务的基础设施,它对配置进行集中的管理并对外暴露接口,当应用程序需要的时候通过接口读取。配置通常为Key/Value模式,然后通过http接口暴露。好了,配置中心不多说了,感觉要偏了,这次是介绍怎么自定义一个配置源从配置中心读取配置。废话不多说直接上代码吧。

    03
    领券