.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);

结果

b997b45fad4b2dc5f17ef727af546f95.png

用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);

结果

25a43c286e95ba6fc71c00a78c2fd830.png

用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;
});

结果

e4f9f13d23b1b36ec2b262235f748bf4.png

读取其他格式的配置文件

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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode:Sudoku Solver Valid Sudouku

其实数独还是我挺喜欢的一个游戏。原来有本数独的书。 其实Sudoku是基于Valid Sudouku.其实一开始有点想太多。基于平常玩数独的经验,有很多解数独的规则。貌似这个人为判断因素比较多。 而且一开始理解的valid是有解无解,其实这里要求的是给定的board里…

Ubuntu之SVN客户端安装+使用

下载SVN 我们先使用sudo apt-get source sudo apt-get update 然后下载svn sudo apt-get install subversion 一步继续一步,每次y 安装成功之后 svn --version查看。 使用 2、 新建一个目录,cd 到新建目录下,将文件 checkout 到本地目录:svn checkout svn://192.168.1…

《SAS编程与数据挖掘商业案例》学习笔记之十一

继续读书笔记,本文重点侧重sas观测值的操作方面, 主要包括:输出观测值、更新观测值、删除观测值、停止输出观测值等 1.output语句 输出当前在pdv中的观测值,继续无条件执行下面的语句。 注意:简单的data步不需要outp…

【1】淘宝sdk装修入门引言

淘宝sdk开发者要具备的一些要求:【1】photoshop图像处理能力【2】html常用标签的基础知识【3】htmlcss布局的基础知识【4】简单的php输出语句【5】对淘宝装修的一些基本了解淘宝sdk的开发流程:【1】设计平面效果图【2】创建本地模板文件【3】创建自定义设…

基于嵌入式webserver的服务器状态监控

其实也是在easyhadoop做第二次重构的时候用到了这个嵌入式的webserver去做服务器状态的监控,可以单独摘出来写个东西。思路主要是用python脚本获取linux服务器的各种状态信息,然后用webserver的方式,以json数据发给http,主控节点去…

Yii框架里用grid.CGridView调用pager扩展不显示最后一页按钮的解决

有如下一例,调用zii.widgets.grid.CGridView显示Blog信息,代码如下: 1 $this->widget(zii.widgets.grid.CGridView, 2 array(3 id>blog-grid,4 dataProvider>$model->search(),5 filter>$model,6 pa…

.NET 6新特性试用 | PeriodicTimer

前言在.NET中,已经存在了5个Timer类:System.Threading.TimerSystem.Timers.TimerSystem.Web.UI.TimerSystem.Windows.Forms.TimerSystem.Windows.Threading.DispatcherTimer不管以前这样设计的原因,现在.NET 6又为我们增加了一个新Timer&…

shell--指“提供使用者使用界面”的软件(命令解析器)

在计算机科学中,Shell俗称壳(用来区别于核), 是指“提供使用者使用界面”的软件(命令解析器)。 它类似于DOS下的command.com。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语…

《SAS编程与数据挖掘商业案例》学习笔记之十三

本次重点:data步循环与控制 涉及:if/then/else语句,select语句,do语句,continue语句,leave语句 1.if then else 语句 高效率的if应用: 1) If x1 then y1; Else if x2 then y2; Els…

ChatForFun 公众号使用说明

使用方法 2016-07-16 DennisMi ChatForFun1,发送 #1 实现登陆,或者退出登陆 2,发送 #2 实现加入聊天,和退出聊天 3,聊天开始后,可以直接发送消息 4,如果需要退出登陆或者退出聊天,…

sessionfunctionphp实战第六天

最近研究sessionfunction,稍微总结一下,以后继续补充: 今天学习了做后台页面,很失败就不展示了。 php方面:以下代码可以屏蔽php注意级别的错误,即 抛出任何非注意错误 error_reporting(E_ALL&~E_NOTICE…

利用WebBrowser实现Web打印的分析

利用WebBrowser实现Web打印的分析 原文:利用WebBrowser实现Web打印的分析WebBrowser是IE内置的浏览器控件,无需用户下载。本文档所讨论的是有关IE6.0版本的WebBrowser控件技术内容。其他版本的IE应该也支持。与其相关的技术要求有:打印文档的生成、页面设…

强大的grep命令

强大的grep命令网上关于grep命令的解释一搜一大堆,基本都是把man命令大致翻译了一下,说实话,看完就忘!个人认为,学习命令最好的方式就是模拟真实环境,写出一些可能用到的命令组合,然后慢慢消化&…

.NET 6新特性试用 | 总结:我最喜欢的5个特性

前言不知不觉,《.NET 6新特性试用》系列文章已经写了20多篇,而今天终于要告一段落了。如果你还没有看过,详细文章列表在这里:.NET 6新特性试用系列在这么多特性中,我最喜欢如下5个特性:1、最小Web API仅需三…

《SAS编程与数据挖掘商业案例》学习笔记之十二

本次重点在:sas数据集管理 主要包括:包括数据集纵向拼接、转置、排序、比较、复制、重命名、删除等 1.append语句 注:base数据集和data两个数据集必须结构一样,避免使用force的情况,重复append的会造成重复。 一个避…

mikrotikROS系统的几种安装方法

这里简单介绍下几种ROS的安装方法,以及适用于哪些设备,这里我们先提供一个ROS6.0全系列版本的下载链接mikrotik-RouteOS-V6.0正式版下载 或者前往官方下载最新版常见的ROS硬件一般分为:X86架构(也是最常用的)mipsbe(欧米tik,部分RB系列,SXT,Groove等)mipsle(RBC系列,RB100,R…

分布式云+dubbo+zookeeper+Springmvc整合

2019独角兽企业重金招聘Python工程师标准>>> Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。 一:单机模式安装…