第2章:配置管理
学习分享 丨作者 / 郑 子 铭 丨公众号 / DotNet NB / CloudNative NB
任务9:配置介绍
命令行配置
Json文件配置
从配置文件文本到c#对象实例的映射 - Options 与 Bind
配置文件热更新
框架设计:Configuration
任务10:命令行配置
新建项目CommandLineSample--控制台应用(.NET Core)
管理NuGet程序包--下载microsoft.aspnetcore.all

传入参数
项目右键--调试--输入参数:name=mingsonzheng age=18

启动项目

默认参数
清空应用程序参数

启动项目

通过PowerShell运行程序,默认参数与传入参数对比
任务11:Json文件配置
新建项目JsonComfigSample--控制台应用(.NET Core)
管理NuGet程序包--下载microsoft.aspnetcore.all
添加Json文件:项目右键--添加新建项class.json

由于class.json不在bin\Debug目录下,所以默认不会被编译,文件右键属性,修改为始终复制

启动项目,可以看到class.json被复制到bin\Debug目录,这样dll就可以读取到class.json文件

读取json文件
启动项目

任务12:Bind读取配置到C#实例
新建ASP.NET Core Web 应用程序OptionsBindSample,直接选择 空,确定
在Startup.cs中通过依赖注入添加configuration
项目右键,新建项,添加一个类Class.cs
项目右键,新建项,添加一个Json文件appsettings.json
为什么取名appsettings.json呢?
因为Program.cs中的CreateDefaultBuilder默认读取一个名为appsettings.json的Json文件并把它的内容添加到配置文件
拷贝前面的内容到appsettings.json
在Startup.cs中通过Bind读取配置
完整Startup.cs
启动项目

任务13:在Core Mvc中使用Options
在项目OptionsBindSample新建三个文件夹目录如下

在Controllers文件夹右键,添加一个控制器,默认,HomeController
在Home文件夹右键,添加一个视图,默认,Index
在Startup.cs中注释掉这一段代码,不然会把整个管道提交,只输出这一段
依赖注入配置添加MVC
使用默认路由
HomeController中通过IOptions方式依赖注入
在Index中定义模型,输出
注册Class,可以通过Configuration读取到option
Startup.cs完整代码
启动项目

如果仅仅在视图中使用options的话,HomeController的代码有点多余,可以直接在视图中注入
Index
HomeController
启动项目得到同样结果
任务14:配置的热更新
ASP.NET修改web.config后站点会自动重启实现热更新
ASP.NET Core不同,实现如下:
将Index的这一行
修改为
启动项目

修改appsettings的ClassNo为222,保存
刷新网页

实现原理
对比控制台程序JsonComfigSample的Program读取配置文件
而在ASP.NET Core程序OptionsBindSample在Program中的CreateDefaultBuilder的源码实现了
WebHost源码: https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs
源码里面实现热更新(165行)
由于它是WebHostBuilder的一个扩展函数,所以可以覆盖该方法
启动项目,修改配置文件,保存,刷新网页,内容不会热更新
任务15:配置框架设计浅析


Last updated