.NET6之MiniAPI(四):配置
配置文件,是一个每个应用服务程序常用的功能,从原来的终端应用时代,到现在的元宇宙时代,配置都是很悠然自得的存在。asp.net core提供了强大的配置文件访问机制,不管是MVC API还是MiniAPI,使用方式都是相同的。
框架默认的配置文件是:appsettings.json,可以以json的格式存放自己复杂的配置:
{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*","ConnectionStrings": {"ExamDatabase": "server=.;database=Exam;uid=sa;pwd=sa;"},"AppInfo": {"Name": "Mini & Powerful","Version": "v1.0.0","Author": {"Architect": "桂素伟-A","Programmer": "桂素伟-P","Designer": "桂素伟-D"},"Features": [ "Learn MiniAPI", "Architect Element" ]}
}
简单取值
var architect = builder.Configuration.GetSection("AppInfo:Author:Architect").Value;
var features1=builder.Configuration.GetSection("AppInfo:Features:1").Value;
用record绑定
record
public record AppInfoRecord(string? Name, string? Version, AuthorRecord? Author, string[]? Features);
public record AuthorRecord(string? Architect, string? Programmer, string? Designer);
绑定
var authorRecord = new AuthorRecord(null, null, null);
var appInfoRecord = new AppInfoRecord(null, null, authorRecord, null);
builder.Configuration.GetSection("AppInfo").Bind(appInfoRecord);
结果
用class绑定
class
public class AppInfo
{public string? Name { get; set; }public string? Version { get; set; }public Author? Author { get; set; }public string[]? Features { get; set; }
}
public class Author
{public string? Architect { get; set; }public string? Programmer { get; set; }public string? Designer { get; set; }
}
绑定
var appInfo = new AppInfo();
builder.Configuration.GetSection("AppInfo").Bind(appInfo);
结果
用record和class绑定各有优势,record定义的时间代码简单,绑定要复杂一些,class正好相反,定义要复杂一些,绑定时简单。
从IConfiguration中获取配置
可以在路由方法中获取配置信息
app.MapGet("/getappinfo", (IConfiguration config) =>
{return config.GetSection("AppInfo:Name").Value;
});
从路由中取配置文件
首选注入
var authorRecord = new AuthorRecord(null, null, null);
var appInfoRecord = new AppInfoRecord(null, null, authorRecord, null);
builder.Configuration.GetSection("AppInfo").Bind(appInfoRecord);
builder.Services.AddSingleton(appInfoRecord);
取配置数据
app.MapGet("/appinfo", (AppInfoRecord appinfo) =>
{return appinfo;
});
结果
读取其他格式的配置文件
myconfig.ini
[iniconfig]
key1=value1
key2=value2
加载配置文件,并取值
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{config.AddIniFile("myconfig.ini",optional: true,reloadOnChange: true);
});var key1=builder.Configuration.GetSection("iniconfig:key1").Value;
.NET6之MiniAPI(四):配置相关推荐
- .NET6之MiniAPI(三十):结束篇(附链接)
不知不觉来到了<.NET6之MiniAPI>的第三十篇,回顾之前的篇幅,主要涉及如下: HTTP请求,应答 Request 桂素伟,公众号:桂迹.NET6之MiniAPI(二):reque ...
- .NET6之MiniAPI(十九):NLog
在本系例文章的第八篇中,我们聊过官方的日志实现,即<.NET6之MiniAPI(八):日志>.但官方的日志功能更多是提供了一个实现基础,对于要求一个灵活,强大,方便的日志体系,官方的还是有 ...
- .NET6之MiniAPI(十四):跨域CORS(上)
为了说明跨请求,创建了两个项目,一个mini api,端口是5001,另一个razor page项目,端口是5280.5280项目会在页面用ajax的方式来请求5001,形成跨域请求,由于是本地测试, ...
- .NET6之MiniAPI(二十四):用Polly重试
为了保障系统的稳定和安全,在调用三方服务时,可以增加重试和熔断.重试是调用一次失败后再试几试,避免下游服务一次闪断,就把整个链路终止:熔断是为了防止太多的次数的无效访问,导致系统不可知异常. Poll ...
- .NET6之MiniAPI(二十七):Metrics
应用的各种Metrics是保证应用健康稳定运行的基础,特别对于一些可用性有所要求的应用,本文介绍prometheus-net这个三方指示库. prometheus-net的工作原理是,在应用内部埋点, ...
- Linux学习之CentOS(三十四)--配置域主DNS服务器
在上一篇随笔里 Linux学习之CentOS(三十三)--DNS基础及域名系统架构,讲解了DNS的一些基础知识以及域名系统架构,在本篇随笔里将详细地讲解主DNS服务器的配置... 一.DNS服务器的类 ...
- .NET6之MiniAPI(二十九):UnitTest
MiniAPI的单元测试与asp.net web api的单元测试大体是相同的(毕竟都是asp.net core),只是在小细节上有一些差异,文章中会说到这点. 本文测试框架是XUnit,Mock框架 ...
- .NET6之MiniAPI(十八):OpenAPI swagger
从本篇开始,介绍一些很不错的三方库,来丰富MiniAPI的使用. 在创建MiniAPI项目时,模板提供了一个是否启用OpenAPI的选项,足见这个三方库的优势和强大. OpenAPI为我们测试API提 ...
- .NET6之MiniAPI(十二):引入EntityFramewor
说明:本篇重点说明MiniAPI引入EntityFramework,EF的使用不是本篇的重点 本篇是在MiniAPI中使用EntityFramework,所以先奉上创建数据的脚本,数据库是SQL Se ...
最新文章
- java mongo 日期范围_java – 在mongodb中按日期对值排序
- 服务端异步IO配合协程浅析
- 微软旷视人脸识别100%失灵!北京十一学校校友新研究「隐身衣」,帮你保护照片隐私数据...
- MAC下 Apache服务器配置
- Required request body is missing 错误
- VTK:VTK 的相机模型用法实战
- 关于js中function(e) e的理解
- 微机原理控制转移类指令
- php用到的mysql语句_PHP中常用到的一些MySQL语句_php
- Qt文档阅读笔记-QTcpServer官方解析与实例(使用QSocket创建简单的HTTP服务器)
- java 课后习题 编写判断从键盘输入的字符串是否为回文
- oracle procedures批量删除带索引条件数据很慢_redis数据结构、持久化、缓存淘汰策略...
- mysql 5.6 没死_MySQL 5.6不删空用户的影响
- ztree 加搜索框_zTree添加搜索
- Python3-word文档操作(七):提取word文档中的图片方式一-利用word文档的压缩文件属性
- KALI安装软件链接不上源,数字签名软件保护,Kali Linux 更新源 数字签名无效处理
- java 世界杯自动分组_2018世界杯分组抽签详解
- 润雅信息完成B轮融资 大数据平台赋能汽车销售 1
- 吉布斯采样(Gibbs Sampling)及相关算法
- Javascript Prototype污染攻击(原型链污染,Bugku-web-sodirty wp)