如何在 ASP.Net Core 中使用 Configuration Provider

ASP.NET Core 是一个开源的,跨平台的,精简的模块化框架,可用于构建高性能,可扩展的web应用程序, ASP.NET Core 中的数据配置常用 k-v 的形式存储,值得注意的是,新的数据配置还支持 层级方式,在这篇文章中,我们将会讨论如何在 ASP.NET Core 中去使用。

默认创建好的 ASP.Net Core 应用程序中会有两个json配置文件:appsettings.jsonappsettings.Development.json, 如下图所示:

使用 Json Provider

现在你可以使用 appsettings.json 来存放应用程序的配置数据。比如:数据库连接串,应用程序特定配置,下面的代码片段展示了如何使用 IConfigurationBuilder.AddJsonFile() 将 appsettings.json 添加到配置系统中。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{var env = hostingContext.HostingEnvironment;config.SetBasePath(env.ContentRootPath);config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);}).UseStartup<Startup>();

接下来看一下 appsettings.json 文件的具体内容。


{"Logging": {"LogLevel": {"Default": "Warning"}},"AllowedHosts": "*","CustomKeys": {"KeyA": "ValueA","KeyB": "ValueB"}
}

要想从 appsettings.json 中读取到配置key,可以从 IConfiguration 实例中进行读取,比如说:想要从 Controller 中读取 Configuration,只需要通过依赖注入的方式将 Configuration 注入到 Controller 即可,如下代码所示:

public class HomeController : Controller{private readonly ILogger<HomeController> _logger;IConfiguration _configuration;public HomeController(ILogger<HomeController> logger, IConfiguration configuration){_logger = logger;_configuration = configuration;}}

下面的代码片段展示了如何通过 IConfiguration 实例 从 appsettings.json 文件中读取自定义的 CustomerKeys 节。

public IActionResult Index(){var keyA = _configuration["CustomKeys:KeyA"];var keyB = _configuration["CustomKeys:KeyB"];return View();}

下面是 HomeController 类的完整代码。

public class HomeController : Controller{private readonly ILogger<HomeController> _logger;IConfiguration _configuration;public HomeController(ILogger<HomeController> logger, IConfiguration configuration){_logger = logger;_configuration = configuration;}public IActionResult Index(){var keyA = _configuration["CustomKeys:KeyA"];var keyB = _configuration["CustomKeys:KeyB"];return View();}}

除了默认生成的 appsettings.json,你还可以使用自定义的json文件给应用程序提供特定的配置信息,换句话说,可以不用将所有的配置信息都放置在 appsettings.json 中,比如你可以创建一个自定义的 customsettings.json,然后在 CreateWebHostBuilder() 中将其灌入到配置系统中,如下代码所示:


public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{                var env = hostingContext.HostingEnvironment;string pathOfCommonSettingsFile = env.ContentRootPath;config.SetBasePath(env.ContentRootPath);config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);config.AddJsonFile(Path.Combine(pathOfCommonSettingsFile, "customsettings.json"), optional: true);}).UseStartup<Startup>();

使用 Memory Provider

所谓的 Memory Provider 允许我们将应用程序的一些配置直接配置到内存,而不像传统方式那样一定要指定一个 物理文件, 下面的代码展示了如何使用 Memory Provider 将 key-value 存放在内存中。

var builder = new ConfigurationBuilder();var profileCollection = new Dictionary<string, string>{{"AuthorProfile:FirstName", "Joydip"},{"AuthorProfile:LastName", "Kanjilal"},{"AuthorProfile:Address", "Hyderabad, India"}};builder.AddInMemoryCollection(profileCollection);Configuration = builder.Build();

灌到内存之后,接下来就可以通过 IConfiguration 实例获取了,如下代码所示:


var firstName = _configuration["Profile:FirstName"];

值得注意的是,和传统的 ASP.NET 相比, ASP.NET Core 中的配置文件数据有变更时,默认情况下应用程序是不会感知的,如果要做到感知的话,通常有两种做法。

  • 重启应用程序

  • 调用 IConfigurationRoot.Reload()

对了,除了上文提到了json和memory,ASP.NET Core 还支持众多的数据格式,如:JSON, XML,INI。

译文链接:https://www.infoworld.com/article/3310608/how-to-use-configuration-providers-in-aspnet-core.html

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

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

相关文章

GdiPlus[30]: IGPPen: 线帽

StartCap 和 EndCap 属性分别用来读写两段的线帽, 测试图:StartCap 和 EndCap 测试代码:uses GdiPlus;procedure TForm1.FormPaint(Sender: TObject); constCapArr: array[0..8] of Byte (0, 1, 2, 3, $10, $11, $12, $13, $14); varGraphics: IGPGraphics;Pen: IGPPen;Pt1,Pt…

你知道怎么样排序才能做到多快好省?

小智最近迷上了计算机算法&#xff0c;今天过来给大家讲讲排序算法。准备讲排序算法之前&#xff0c;我们还是要先回顾一下排序这个概念。排序是一门古老的科学。排序问题&#xff0c;用数学的方式可以表达如下问题输入&#xff1a;给定n个数&#xff0c;a1, a2, a3, ..., an…

php 数据导出到excel文件,PHP导出数据到excel文件

下面介绍一个很另类的php导出数据到xls文件的方法&#xff0c;用到的函数有pack,iconv//上面三个自定义函数很重要&#xff0c;大家自行揣摩function xlsBOF() {echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);}function xlsEOF() {echo pack("ss"…

C# 使用 Index 和 Range 简化集合操作

C# 使用 Index 和 Range 简化集合操作Intro有的语言数组的索引值是支持负数的&#xff0c;表示从后向前索引&#xff0c;比如&#xff1a;arr[-1]从 C# 8 开始&#xff0c;C# 支持了数组的反向 Index&#xff0c;和 Range 操作&#xff0c;反向 Index 类似于其他语言中的负索引…

python 服务端框架_GitHub - edisonlz/fastor: Python服务端开发框架-极易上手,超出你的想象!...

欢迎使用Python 服务端开发框架 FastorFastor是一款专为Python 打造的API与后端管理系统&#xff0c;通过精心的设计与技术实现&#xff0c;集成了大部分稳定开发组件&#xff0c;memcache &#xff0c; redis&#xff0c;tornado&#xff0c;django&#xff0c;mysql 等。特点…

我的小服务器

朋友做了一个工控机的板子&#xff0c;我要了一块来&#xff0c;自己加上了迅驰1.2G CPU&#xff0c;再从笔记本上拆了一个1G内存和老的移动硬盘 30G IDE&#xff0c;就算搭起了一个最简陋的服务器。此外我从破DVD光驱上拆了一块铁皮底板&#xff0c;打了几个洞&#xff0c;把主…

爱心助农|百万斤丑苹果紧急待售!谁能帮这些特困孩子熬过寒冷冬天?

题记&#xff1a;人们在猛兽横行的蛮荒年代&#xff0c;得以从树上回归地面&#xff0c;是人们守望相助的结果&#xff0c;也是人类能繁衍至今的原因在这个什么都讲究颜值的年代有这样一个东西却以“丑”、“但非常好吃”引起了我们的注意它便是山西临猗的冰糖心丑苹果还要一个…

php云点播源码,乐视云直播 点播服务端api

php代码<?php class LeshiController{public $userid ;//用户idpublic $secret ;//私钥public $user_unique ;//用户唯一标识码&#xff0c;由乐视网统一分配并提供 UUIDpublic $zhibo_apiurl http://api.open.letvcloud.com/live/execute;//直播接口地址public $dianb…

微软开源AI诊断工具Error Analysis

喜欢就关注我们吧&#xff01;Error Analysis 使用机器学习技术&#xff0c;助数据科学家更好地了解模型错误模式。在 2020 年 5 月的微软 Build 大会上&#xff0c;微软推出了三个响应式的 AI&#xff08;Responsible AI&#xff0c;RAI&#xff09;工具包&#xff0c;这三个工…

【SDL的编程】VC环境搭建

SDL&#xff08;simple DirectMedia Layer&#xff09;是一个可跨平台的开源库&#xff0c;最近由于自己的兴趣&#xff0c;就把它windosXP下的环境搭建了下。PC&#xff1a;Mircrosoft Windows XP Service Pack3Platform&#xff1a;Mircrosoft Visual C 6.0SourceCode&#x…

php正则匹配标点符号,php 正则匹配包含字母、数字以及下划线,且至少包含2种...

【scikit-learn】scikit-learn的线性回归模型&#xfeff;&#xfeff; 内容概要 怎样使用pandas读入数据 怎样使用seaborn进行数据的可视化 scikit-learn的线性回归模型和用法 线性回归模型的评估測度 特征选择的方法 作为有监督学习,分类问题是预 ...icon图标http://images20…

# 保持最外层获取焦点_大事件!沈阳爱尔白内障焕晶诊疗中心正式启用,两位PanOptix三焦点人工晶体植入患者清晰见证!...

近日&#xff0c;沈阳爱尔眼科医院大东院区白内障焕晶诊疗中心正式投入使用&#xff01;由沈阳爱尔眼科医院大东院区业务院长朱建勋领衔的白内障手术团队始终与国内外一流水准保持同步&#xff0c;开创性引进了爱尔康AcrySof IQ PanOptix 新一代三焦点人工晶状体。中心最先入住…

使用 Tye 辅助开发 k8s 应用竟如此简单(六)

续上篇&#xff0c;这篇我们来进一步探索 Tye 更多的使用方法。本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花。巧了&#xff0c;巧了&#xff0c;真是巧了 今天正值 dapr 1.0 发布的日子。如果你暂时还不了解什么是 dapr。那不如通过以下简短…

eval() php,js-eval编码,js-eval解码

实例例子 1在本例中&#xff0c;我们将在几个字符串上运用 eval()&#xff0c;并看看返回的结果&#xff1a;eval("x10;y20;document.write(x*y)")document.write(eval("22"))var x10 document.write(eval(x17))输出&#xff1a;200 4 27例子 2看一下在其他…

李阳疯狂英语300句

1.Absolutely.(用于答话&#xff09;是这样;当然是;正是如此;绝对如此。2.Absolutely impossible!绝对不可能的&#xff01;3.All I have to do is learn English. 我所要做的就是学英语。4.Are you free tomorrow?你明天有空吗?5.Are you married?你结婚了吗&#xff1f;6.…

python函数用于创建对象_Python-创建类并使用函数更改其对象值

有人建议我把这个重新贴出来以便更清楚。上完一节课&#xff0c;剩下的就不上这节课了。欢迎任何指导。我已经得出了这个问题的一部分&#xff0c;在那里我坚持要保持简短。我还附上了我的工作。在下面的工作中&#xff0c;我希望能够创建一个包含一个变量的类。我希望能够更改…

BeetleX.WebFamily针对Web SPA应用的改进

BeetleX.WebFamily1.0在集成vueelementaxios的基础上添加应用页、窗体布局和登陆验证等功能。通过以上功能开发Web SPA应用时只需要编写vue控件和配置菜单即可实现应用开发。使用创建一个.net控制台项目&#xff0c;然后通过Nuget引入BeetleX.WebFamily1.0组件&#xff0c;并在…

php acl rbac,建站常用的用户权限管理模型ACL和RBAC的区别

常用的权限管理模型ACL和RBAC的区别1.ACLACL是最早也是最基本的一种访问控制机制&#xff0c;它的原理非常简单&#xff1a;每一项资源&#xff0c;都配有一个列表&#xff0c;这个列表记录的就是哪些用户可以对这项资源执行CRUD中的那些操作。当系统试图访问这项资源时&#x…

测光

所谓测光其实就是指数码相机根据环境光线系统依靠特定的测量方式而给出的光圈/快门组合的方式。简单的说&#xff0c;也就是对被摄物体的受光情况进行测量。一般来说&#xff0c;测光主要是测定被拍摄对象反射到镜头中的光亮度然后在根据这一亮度给出一定的光圈快门速度组合。而…

python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装

&#xff01;&#xff01;&#xff01;首先建议在Windows下安装 因为很方便&#xff01;&#xff01;&#xff01;gmpy2是解密RSA时所用脚本的一个模块python下输入 import gmpy2 ,提示 Traceback (most recent call last): File"", line 1, in ImportError: No mod…