您现在的位置是:首页 > 正文

appsettings.json reloadOnChange事件处理

2024-01-30 21:01:31阅读 0

    写作一直是我比较头疼的事,从事10多年软件开发工作,基本上没写过什么文章,.net core的出现让我终于看到了.net平台的曙光,很希望广大.net开发者共同努力让.net core尽快成长起来,我也愿意为.net core技术的发展尽一分自己微薄之力,所以虽然文笔不佳,但还是要硬着头皮尝试写一写,把我在使用.net core过程中遇到的一些问题记录下来,与大家分享一下,水平有限,谬误之处请大家多多指点。

     今天遇到的问题是,项目中需要监控appsettings.json文件配置,当配置改变时配置文件reload,同时更新相关业务流程,文字详细描述一个问题实在不是我强项,还是直接上代码吧!

     只贴出来相关代码,不是一个完整bootstrapper类

    public class Bootstrapper 
    {   
        private IDisposable _callbackRegistration;
          
        private void ReadSettings(string filename,bool reloadOnChange)
        {
            var configurationBuilder= new ConfigurationBuilder();

            var currentPath = Directory.GetCurrentDirectory();
            if (!File.Exists(Path.Combine(currentPath, filename)))
            {
                return;
            }
            configurationBuilder
                    .SetBasePath(currentPath)
                    .AddJsonFile(filename, false, reloadOnChange);
            var config = configurationBuilder.Build();
            //关键在于IChangeToken(通过GetReloadToken方法获得)的应用,具体低层实现可以查阅相关资料,此处不赘述
            if(reloadOnChange) _callbackRegistration = config.GetReloadToken().RegisterChangeCallback(CallBack, config);
        }

        private void CallBack(object obj)
        {
            _callbackRegistration?.Dispose();
            
            var config = (IConfiguration)obj;

            var appsettings = config.Get<AppSettings>();           
            //TODO:取得最新配置后修改相关业务逻辑

            //重新注册callback,下次appsettings.josn更新后会自动调用
            _callbackRegistration = config.GetReloadToken().RegisterChangeCallback(CallBack, obj);
        }
    }
posted on 2018-09-29 10:57  紫渊 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/fly8844/p/9722559.html

网站文章

  • 【CCNP】第六章 流量控制 最新发布

    【CCNP】第六章 流量控制 最新发布

    R4(config)# access-list 1 permit 192.168.1.0 0.0.0.255 # 此处的permit不搭配接口下策略使用,不再是允许/放行的意思,而代表抓取。假设该公司...

    2024-01-30 21:01:03
  • 浙江省高校招生计算机类职业,浙江高校招生职业技能考试大纲:计算机类

    (三)数字媒体技术应用技能操作考试模块1.掌握Photoshop工具箱中常用工具的操作(1)能利用选区工具组绘制选区;(2)能利用选区编辑工具及命令进行选区的编辑;(3)能利用修复工具组和图章工具组进...

    2024-01-30 21:00:55
  • springcloud gateway分发服务报302,Network Error

    springcloud gateway分发服务报302,Network Error

    springcloud使用gateway分发服务,访问接口时一直报错:打开浏览器控制台一直提示302,然后转发到login;多次试验后发现是pom.xml文件中引入的secret依赖的问题,注释后重新...

    2024-01-30 21:00:47
  • A-color-image-encryption-technique-using-exclusive-OR-with-DNA-complementary-rules-based-on-chaos...

    A-color-image-encryption-technique-using-exclusive-OR-with-DNA-complementary-rules-based-on-chaos...

    【论文地址】A-color-image-encryption-technique-using-exclusive-OR-with-DNA-complementary-rules-based-on-ch...

    2024-01-30 21:00:18
  • Say Goodbye to OOM Crashes

    Say Goodbye to OOM Crashes

    内存管理---在计算机编程中,内存管理是一项关键任务,用于在程序运行时正确分配和释放内存。一个有效的内存管理系统可以帮助程序提高性能,减少内存泄露和访问错误等问题。内存管理涉及以下几个方面:1. 内存...

    2024-01-30 21:00:04
  • mybatis mysql的新增返回自增长id

    第一种方式: 表中主键没有定义自增长在实体类的映射文件 "*Mapper.xml" 这样写:<insert id="insertOrderReturnId" useGeneratedKeys="tru...

    2024-01-30 20:59:58
  • Embedding Layer理解

    参考 https://spaces.ac.cn/archives/4122 https://blog.csdn.net/jiangpeng59/article/details/77533309 https://www.cnblogs.com/bonelee/p/7904495.html https://blog.csdn.net/pipisorry/article/details/7609...

    2024-01-30 20:59:30
  • 关于 Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb

    关于 Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb

    我的问题是出现在了设计触发器的时候我的问题是出现在了设计触发器的时候我的问题是出现在了设计触发器的时候错误原因Cause: java.sql.SQLException: Illegal mix of ...

    2024-01-30 20:59:25
  • 从零开始布置你的个人网站(一)

    从零开始布置你的个人网站(一)

    准备之前用腾讯云的学生购买了一个1元服务器,但是一直没有用起来,最近项目不太忙,准备自己搭建一个线上环境。安装ubuntu环境 安装ubuntu的16.04.1的32环境 登录ubuntu系统,可以直接使用腾讯云的登录,也可以通过各种ssh工具登录。 在Ubuntu中输入密码是不可见,直接输入之前设置的密码就行 登录成功就是下图的样子 安装各类软件 首先我们先切换到root 用户,获得管理员权限

    2024-01-30 20:59:20
  • 2022最详细的git代码托管服务1(亲测)

    2022最详细的git代码托管服务1(亲测)

    代码托管服务git的详细使用

    2024-01-30 20:58:49