任务14:配置的热更新

任务14:配置的热更新

 

热更新,默认是不支持的。

网站正在运行,在不关掉网站的情况,修改了配置文件appsettings.json文件。当用户下一次请求的时候,直接拿到我们的配置信息

这个跟我们在asp.net里面的config不一样,我们在更改web.config的内容后,站点会自动重启,重新加载。

这个热更新就是以后我们在修改了配置文件后,不会影响用户的访问。这是Configuration改进的比较有用的一个地方

我们只需要更改这一个地方IOptions修改为IOptionsSnapshot

当你用到这种及时更新的配置信息就用IOptionsSnapshot

 

修改了配置信息后,我们只需要刷新页面就可以了

 

实现的原理

在我们之前的项目里 ,这里的AddJsonFile方法有另外两个参数

参数2:是否可选,当这个存文件不存在的时候,是否会抛出异常。这里我们设置为fasle

参数3:reloadOnChange设置为true的话,当这个文件发生改变。就会重新加载这个文件。

 

复制代码
using System;
using Microsoft.Extensions.Configuration;

namespace JsonConfig
{
    class Program
    {
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .AddJsonFile("class.json",false,true);

            var configuration = builder.Build();

            Console.WriteLine($"ClassNo:{configuration["ClassNo"]}");
            Console.WriteLine($"ClassDesc:{configuration["ClassDesc"]}");

            Console.WriteLine("Students");

            Console.Write(configuration["Students:0:name"]);
            Console.WriteLine(configuration["Students:0:age"]);

            Console.Write(configuration["Students:1:name"]);
            Console.WriteLine(configuration["Students:1:age"]);

            Console.Write(configuration["Students:2:name"]);
            Console.WriteLine(configuration["Students:2:age"]);


            Console.ReadLine();

        }
    }
}
复制代码
Program.cs

 

 

复制代码
{
  "ClassNo": "1",
  "ClassDesc": "ASP.NET Core 101",

  "Students": [
    {
      "name": "jesse",
      "age": "13"
    },
    {
      "name": "jim",
      "age": "18"
    },
    {
      "name": "lisa",
      "age": "22"
    }
  ]
}
复制代码
class.json

 

 

 但是在我们的asp.net core mvc中并没有看到我们去加reloadOnChange这个动作。

core mvc中是通过这里的 CreateDefaultBuilder 来帮我们完成的这一系列的操作。

 

 分析githb上的WebHost的源代码

https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs

在CreateDefaultBuilder方法里面默认reloadOnChage设置为了true。这就是为什么我们core mvc项目里面没有做任何操作,这里就已经可以热更新。

 

ConfigureAppConfiguration是上面的 WebHostBuilder 的一个扩展函数

我们可以在这里调用ConfigureAppConfiguration方法,把默认的覆盖掉。取消掉了热更新。这样我们的热更新就取消掉了。

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
我在关注他 取消关注
0
0
« 上一篇: 任务13:在Core Mvc中使用Options
» 下一篇: 任务15:配置框架设计浅析
posted @ 2019-02-11 19:04 GASA 阅读( 9) 评论( 0) 编辑 收藏

转载于:https://www.cnblogs.com/owenzh/p/11304118.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值