首页
学习
活动
专区
工具
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变更并重启网站的几种方法。请注意,这些方法适用于开发环境下的网站重启,对于生产环境的网站,可能需要使用其他方式来实现配置的动态更新和重启。

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

相关·内容

快速学习跨平台?我推荐官方文档+阅读源码!

如何快速学习ASP.NET Core?在我看来,先看微软ASP.NET Core5.0官方中文文档,再大致读一遍源码,最后结合一些场景做些扩展封装,就可以很轻松的驾驭跨平台开发了!...文档概览 本文档由微软技术专家编写,从1.1版本持续维护升级至今,开篇就详细对比了各版本中的差异,内容包含了ASP.NET Core、Blazor、WebAPI、SignalR、gRPC、EF Core...如果找不着地方,或者访问网站不方便的,可以扫码进群(或微信号zhaoxi005)领取。...当然,源码阅读也没那么简单,这里给大家推荐微软MVP-Eleven老师的《ASP.NET Core核心源码训练营》,今晚八点开讲。...上面提到的ASP.NET Core5.0官方中文文档,ASP.NET Core5.0源码、以及笔面试题,都已经整理好放在网盘,下图扫码进群(或加微信zhaoxi005)领取吧。

82610

ASP.NET Core 网站运行时修改设置如何自动生效

ASP.NET Core中,如果修改了appsettings.json中的设置,那么默认情况下就得重启网站才能生效。有没有办法在修改设置自动刷新并应用呢?...背景 首先,我们看看默认模板建出来的 ASP.NET Core 网站,配置文件有两个: appsettings.json appsettings.Development.json 前者用于生产环境,后者用于开发环境...但个缺点就是在网站运行时,如果修改了 appsettings.json 中的配置项,是不会当场生效的,必须重启网站才能应用。...比如我博客的网页标题,是来源于配置文件里的 SiteTitle,如果我在网站运行时登录服务器后台,改成 "Edi.Wang Test",是不会生效的,必须得等下次网站重启。 ?...这段代码其实是没有必要的,这样改完代码还是得重启网站才能让设置生效,原因在强类型约束的时候使用的IOptions接口。

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

    ,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表。...然后使用vscode打开解压的文件夹。...至于vscode如何加载文件,你可以看我这篇文章使用Visual Studio Code开发.NET Core看这篇就够了 当然你也可以在上面的网页上直接找到相应的目录浏览也是可以的。...这里多讲一点,传统asp.net的web.config文件如果有更改的话是必须要重启站点才能使,配置文件生效的,但是asp.net core的配置文件是支持热更新的,及不重启网站也能加载更新,只需要设置一下属性即可...总结 本文一步一步带着你先分析了ASP.NET Core的启动过程及运行的原理,紧接着给你讲了配置文件的加载过程及原理,并通过示例代码演示了如何加载自定义的配置文件,最后引出了依赖注入以及控制反转的概念

    62120

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

    .NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表。...然后使用vscode打开解压的文件夹。...至于vscode如何加载文件,你可以看我这篇文章使用Visual Studio Code开发.NET Core看这篇就够了 当然你也可以在上面的网页上直接找到相应的目录浏览也是可以的。...的web.config文件如果有更改的话是必须要重启站点才能使,配置文件生效的,但是asp.net core的配置文件是支持热更新的,及不重启网站也能加载更新,只需要设置一下属性即可,如下图所示: !...总结 本文一步一步带着你先分析了ASP.NET Core的启动过程及运行的原理,紧接着给你讲了配置文件的加载过程及原理,并通过示例代码演示了如何加载自定义的配置文件,最后引出了依赖注入以及控制反转的概念

    72600

    一个实时收集MySql变更记录的组件CanalSharp.AspNetCore

    https://github.com/alibaba/canal 二、关于CanalSharp.AspNetCore   CanalSharp.AspNetCore是一个基于CanalSharp的适用于ASP.NET...Core的一个后台任务组件,它可以随着ASP.NET Core实例的启动而启动,目前采用轮询的方式对Canal Server进行监听(我比较懒,目前主要是借鉴了晓晨的Demo来改写的),获得MySql...C:\ProgramData\MySQL\MySQL Server 5.7\my.ini的以下内容 log-bin=mysql-bin binlog-format=Row server-id=1   重启数据库服务...4.2 添加配置文件项   在配置文件(appSettings.json)中添加以下配置项: "Canal": { "Enabled": true, "LogSource": "Core.Product.Canal...又或者进行Insert行操作,canal.logs表会自动记录变更的记录数据如下图: ?

    1.1K30

    ASP.NET Core 2.2 : 二十二. 多样性的配置方式

    大多数应用都离不开配置,本章将介绍ASP.NET Core中常见的几种配置方式及系统内部实现的机制。...(ASP.NET Core 系列目录) 说到配置,第一印象可能就是“.config”类型的xml文件或者“.ini”类型的ini文件,在ASP.NET Core 中,常用的配置文件类型为JSON...实际上,ASP.NET Core支持多种配置方式,除了采用JSON文件的方式外,还支持内存、命令行等方式。...本例演示了系统默认的appsettings.json文件中的内容被自动载入,那么如何将自定义的JSON文件中的内容应用到系统的配置中去呢?...再次访问home/GetConfiguration,返回的结果如下: Theme Name:Red,Color:#FF4500 这是因为添加的Theme.json文件中的Theme值覆盖了appsettings.json

    62620

    可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践

    问题引出 ​ 可能很多新手都会遇到同样的问题:我要我的Asp.net Core 应用传统方式直接部署(host),docker部署(docker-compose),kubernetes(以下称k8s...大家知道,我们默认平时配置文件以appsettings.json 、appsettings....另外在k8s下面又有Secret、ConfigMap等多种方式管理配置,如何把多种配置存储和读取,有机结合、同一份代码统一管理使用,是我们今天的主题。 ​...主要考虑到后面在docker、k8s等里面,更好管理,比如yaml的注释和json的注释语法不一致等等问题; 比如我原来的appsettings.json长这样: { "Logging": {...,下次我定好好想,认真写好点; 然后我的主题,其实思考过同样问题的读者,全文就一句:volumes挂载配置做到各种环境下的配置统一; 最后,我抛出了一个问题:On K8s的时候, 程序启动使用的配置,如何在配置文件更新的情况重启程序应用新配置

    1K10

    ASP.NET Core 微服务实战》-- 读书笔记(第9章)

    第 9 章 微服务系统的配置 微服务系统中的配置需要关注更多其他方面的因素,包括: 配置值的安全读写 值变更的审计能力 配置信息源本身的韧性和可靠性 少量的环境变量难以承载大型、复杂的配置信息 应用要决定是否支持配置值的在线更新和实时变更...,还要决定如何实现 对功能开关和层级化设置的支持 对敏感信息以及加密密钥本身进行存储和读取支持 本章首先讨论在应用中使用环境变量的机制,并演示 Docker 的支持情况 接着探索一个来自 Netflix...使用 Spring Cloud 配置服务器 围绕服务的配置管理的最大难题之一,并非如何将值注入到环境变量,而在于这些值本身的日常维护 当配置的原始源处的值发生变更时,我们如何得到通知 更进一步,当值发生变更时..., "System": "Information", "Microsoft": "Information" } } } 配置完成,...values 端点,将返回这些值: {"world", "12.5"} 这些正是本节前面面向 etcd 服务器添加的值 只使用了少数几行代码,我们便创建了一个由远程配置服务器支持的、稳定而符合标准的 ASP.NET

    51510
    领券