博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.4配置的热更新「深入浅出ASP.NET Core系列」
阅读量:7200 次
发布时间:2019-06-29

本文共 907 字,大约阅读时间需要 3 分钟。

原文:

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,谢谢关注。

大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示:

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

修改IOption为IOptionsSnapshot

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

修改为IOptionsSnapshot后,即可达到热更新,非常简单。

内部机制

我们来看下ASP.NET Core内部是如何做到的?

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

如上图所示,我们增加了一行代码:

builder.AddJsonFile("appsettings.json", false, true);

这里我们重写并覆盖了WebHost内部的CreateDefaultBuilder方法,并且设置了两个bool型参数,其实我们也可以不做重写,也就是上面的代码注释掉

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

一样能达到热更新的目的。

那么,到底WebHost这个静态方法内部做了哪些工作,我们一起访问下面源码连接:https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs,看下内部都做了些什么。

找到函数CreateDefaultBuilder

2.4配置的热更新「深入浅出ASP.NET Core系列」

 

我们看到关键代码:

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

其中optional和reloadOnChange默认为true,这就是问题的关键,内部已经另起进程,自动帮我们做配置改变的事件监听了,这就是不做重写覆盖一样能达到热更新的目的所在。

覆盖的目的是,我们有时候配置文件不一定都写在appsettings.json里面,有可能写在自定义的配置文件罢了。

我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您的关注。

转载地址:http://fkdum.baihongyu.com/

你可能感兴趣的文章
语音信号处理之(三)矢量量化(Vector Quantization)
查看>>
hdu 4666 Hyperspace
查看>>
linux中shell变量$#,$@,$0,$1,$2的含义解释
查看>>
多态时最好将基类的析构函数设为virtual、 C++中两个类相互包含引用问题 (转载)...
查看>>
JS动态生成的元素,其对应的方法不响应(比如单击事件,鼠标移动事件等)...
查看>>
iOS - Swift PList 数据存储
查看>>
[转载]Windows 2003 R2 SP2 VOL 企业版(简体中文)
查看>>
java web 分页实现
查看>>
谈谈区块链的理解 -- 读《区块链:技术驱动金融》
查看>>
模板类声明和定义 (转)
查看>>
RSync 远程同步工具的使用
查看>>
C++访问mysql数据库
查看>>
字符测试与映射函数 ctype.h
查看>>
关于Spring的69个面试问答——终极列表
查看>>
MyBatis參数格式化异常解决方式:MyBatisSystemException:
查看>>
核心动画中的动画组和转场动画
查看>>
git 命令自动补全
查看>>
(转)真实经纬度的最简单获得方法
查看>>
解读微信公众号的推广运营之道
查看>>
以后不用再出门购物?下单菜鸟就从你家门口发货,2小时就能到!
查看>>