任务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(); } } }
{ "ClassNo": "1", "ClassDesc": "ASP.NET Core 101", "Students": [ { "name": "jesse", "age": "13" }, { "name": "jim", "age": "18" }, { "name": "lisa", "age": "22" } ] }
但是在我们的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方法,把默认的覆盖掉。取消掉了热更新。这样我们的热更新就取消掉了。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
昵称:
不改了 退出 订阅评论
[Ctrl+Enter快捷键提交]
【推荐】程序员问答平台,解决您开发中遇到的技术难题
· 【ASP.NET Core快速入门】(六)配置的热更新、配置的框架设计
· 2.4配置的热更新「深入浅出ASP.NETCore系列」
· 2.4配置的热更新「深入浅出ASP.NETCore系列」
· 2.4配置的热更新「深入浅出ASP.NETCore系列」
· .NET CORE 2.0小白笔记(五):配置的热更新、配置的框架设计
· 华为方舟编译器编译工具正式发布,附源码下载
· 消息称阿里秘密成立经发委:官方不予置评
· 刚刚过去的 7 月,是人类有史以来最热的一个月
· 日本对AI人才匮乏感到恐慌 索尼等科技公司增加外国工程师招聘
· 在朋友圈骂人被罚1000元!法官这样说…
» 更多新闻...
2014-02-11 arcgis for silverlight 相关学习资料整理
2014-02-11 (转)ASP.NET 4.0 尚未在 Web 服务器上注册
2013-02-11 可代替SQL Server中Like语句的用法
2013-02-11 Detect IFrame Load Event 探索Iframe的加载事件
2013-02-11 How To Change Collapse Tool Position 改变Panel收缩按钮的位置
2013-02-11 ExtJS4 Panel中嵌套PDF