net Core TOptions和热更新
TOptions接口
net Core 项目有个appsettings.json文件,程序默认也是读取的这个文件,appsettings.json是一个配置文件
我们可以把appsettings.json里面的json字符串映射成实体对象,打开appsettings.json文件,添加如下结构
Info是我新增的,Logging是默认生成的。暂时不管
新增实体类,不区分大小写
ConfigureServices注册
Configuration.GetSection("Info") 是获取appsettings.json文件中的某个节点,跟Info绑定
注册以后,在其他地方就可以通过DI注入使用了,比如:通过构造注入就能获取到数据了
IOptions 依赖命名空间: Microsoft.Extensions.Options;
如果你想在 ConfigureServices 中就使用对象Info呢?那么可以通过Bind方法
Bind方法有两个重载
所以可以这样绑定
上面说了。我们只是获取了appsettings.json中的某个节点,如果想把appsettings.json所有数据
都绑定到Configuration呢?还有一种是这样的结构
用上面的代码就行不通了,要换一种写法:
查看结果发现:info2是没有值的,这样又多了一个Get方法,
热更新IOptionsSnapshot接口
我们知道传统的net,如果修改了Web.Config网站是需要重启的,在net core是支持热更新的
IOptionsSnapshot 接口,也依赖于命名空间: using Microsoft.Extensions.Options
为了测试,我们在修改下构造函数
这样便于对比
ConfigureServices里面不变,加个断点,然后运行项目,目前他们是一样结果
然后我修改下appsettings.json某个字段的值
在次刷新项目,info2的值变了。IDE还用红色突出了这个值变化了
至于IOptions和IOptionsSnapshot有什么区别,我找了只是指出了一个支持热更新,一个不支持
具体内部的代码实现,有兴趣的小伙伴可以去github看源码
刚说了,net core 默认是加载appsettings.json文件,有个参数是可以指定:是否支持热更新
reloadOnChange 参数:如果文件更改,是否应重新加载配置。
当然,这仅仅对支持热更新的IOptionsSnapshot有效
我们也可以手动指定加载这个appsettings.json,当然,如果你手动加载的话,名字可以随便取,不一定叫appsettings.json
当然,约定大于配置,用这个名,一看就知道是配置文件
如果自定义,也就是用ConfigureAppConfiguration注册使用AddJsonFile方法,如果不添加 reloadOnChange
那么默认是false,那么IOptionsSnapshot就不会支持热更新了,具体对比结果我就不截图了
https://www.jianshu.com/p/b9416867e6e6
net Core TOptions和热更新的更多相关文章
- 2.4配置的热更新「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是 ...
- 【ASP.NET Core快速入门】(六)配置的热更新、配置的框架设计
配置的热更新 什么是热更新:一般来说,我们创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的 我们只需要吧项目中用到的IOptions改成IOptionsSnap ...
- 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
配置的热更新 什么是热更新:这个词听着有点熟悉,但到底是什么呢? 一般来说:创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的 我们只需要吧项目中用到的IOpti ...
- 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新
大家好, 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...
- .NET CORE 2.0小白笔记(五):配置的热更新、配置的框架设计
配置的热更新 什么是热更新:一般来说,我们创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的 我们只需要吧项目中用到的IOptions改成IOptionsSnap ...
- 【架构篇】ASP.NET Core 基于 Consul 动态配置热更新
背景 通常,.Net 应用程序中的配置存储在配置文件中,例如 App.config.Web.config 或 appsettings.json.从 ASP.Net Core 开始,出现了一个新的可扩展 ...
- .net core 学习小结之 配置介绍(config)以及热更新
命令行的配置 var settings = new Dictionary<string, string>{ { "name","cyao"}, {& ...
- Unity3D热更新全书FAQ
只要有程序员朋友们问过两次的问题 就会收录在此FAQ中 1.C#Light对比LUA有什么好处 C#Light是静态类型脚本语言,语法同C#,Lua是动态类型脚本语言,这两种都有人喜欢. 我更喜欢静态 ...
- Webpack多入口文件、热更新等体验
Webpack现今流行的前端打包工具,今儿本人也来分享下自己学习体验. 一.html-webpack-plugin 实现html模板文件的解析与生成 在plugins加入HtmlWebpackPlug ...
随机推荐
- day16匿名函数
匿名函数,好像也就是 lambda 表达式 先来看一段函数,返回 def func(n): return n * 3 print(func(5))15 用lambda表达式写: func = lamb ...
- HttpWebRequest简单使用
HttpWebRequest简单使用 摘要 HttpWebRequest类对WebRequest中定义的属性和方法提供支持,也对使用户能够直接与使用HTTP的服务器交互的附加属性和方法提供支持. 创 ...
- 还不知道spring的RestTemplate的妙用吗
为什么要使用RestTemplate? 随着微服务的广泛使用,在实际的开发中,客户端代码中调用RESTful接口也越来越常见.在系统的遗留代码中,你可能会看见有一些代码是使用HttpURLConnec ...
- [wordpress]WordPress地址(URL)错误,修改解决方案
本人在修改Wordpress地址(URL)时,误操作使URL指向错误,后台无法进入. 解决方案 1.先利用Putty登陆到自己的服务器上(这里登陆方法我不再赘述): 2.登陆MySqL,并输入密码: ...
- Python WMI获取Windows系统信息
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.cnblogs.com/liu-ke/ import wmi import os i ...
- 潭州课堂25班:Ph201805201 tornado 项目 第八课 增加喜欢功能(课堂笔记)
tornado 相关说明 新增一个页面,用来做图片收藏, 还要在 account.py 创建一个数据库表,记录用户喜欢的图片,哪些图片用户疯狂传奇 cd 到 项目目录下,执行数据库更新 alembic ...
- mysql学习1
1.什么是数据库? 数据的仓库,如在ATM的示例中创建了一个db目录,称其为数据库 2.安装 下载 http://dev.mysql.com/downloads/mysql/ 安装 windows: ...
- Hash算法的讲解
散列表,又叫哈希表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Hash ta ...
- error MSB8020 问题解决
产生原因: 1.vs 版本过低 2.项目平台工具选择不正确 解决方案: 1.安装VS2015以上的版本 2.选择项目属性,修改平台工具,选择当前版本可用的工具. 具体步骤:右键点击你的项目,选择 Pr ...
- word/pdf互转的链接
参考链接 http://www.greenxf.com/soft/98467.html