NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?

咨询区

  • Oluwafemi

在 appsettings.json 中我有如下的 AppSettings 实体数据,如下代码所示:


{"AppSettings": {"token": "1234"}
}

我在网上搜了很久,寻找如何从 .json 文件中获取 AppSettings 实体,貌似都不对,比如下面这样的获取方式。


var configuration = new Configuration();
var appSettings = configuration.Get("AppSettings"); // null
var token = configuration.Get("token"); // null

我知道在 ASP.NET 4.0 中可以像下面这样获取。


System.Configuration.ConfigurationManager.AppSettings["token"];

请问我如何在 ASP.NET Core 中做等价处理 ?

回答区

  • Yuval Itzchakov

要想在 ASP.NET Core 中使用 settings 的话?推荐的做法是:在 Startup 类中初始化 Configuration,然后再使用 Options 模式访问 Configuration 中的具体某个配置节,为了方便讲解,参考下面的例子。


{"MyConfig": {"ApplicationName": "MyApp","Version": "1.0.0"}
}

然后再配套一个 POCO 类,类定义如下:


public class MyConfig
{public string ApplicationName { get; set; }public int Version { get; set; }
}

现在就可以在 Startup.cs 中构建 Configuration 了。


public class Startup 
{public IConfigurationRoot Configuration { get; set; }public Startup(IHostingEnvironment env){var builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);Configuration = builder.Build();}
}

值得注意的是在 .NET Core 2.0appsettings.json 已经是默认注册好的,现在你可以根据你的具体环境修改 appsettings.{Environment}.json 配置文件名即可。

如果你想将 configuration 注入到 Controller 中,需要在 Startup.ConfigureServices 方法内做一下配置,参考如下代码。


public void ConfigureServices(IServiceCollection services)
{services.AddMvc();// Add functionality to inject IOptions<T>services.AddOptions();// Add our Config object so it can be injectedservices.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}

然后就可以注入到 Controller 中了。


public class HomeController : Controller
{private readonly IOptions<MyConfig> config;public HomeController(IOptions<MyConfig> config){this.config = config;}// GET: /<controller>/public IActionResult Index() => View(config.Value);
}

完整的 Startup 如下。


public class Startup 
{public IConfigurationRoot Configuration { get; set; }public Startup(IHostingEnvironment env){var builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath).AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);Configuration = builder.Build();}public void ConfigureServices(IServiceCollection services){services.AddMvc();// Add functionality to inject IOptions<T>services.AddOptions();// Add our Config object so it can be injectedservices.Configure<MyConfig>(Configuration.GetSection("MyConfig"));}
}

点评区

想在 Appsettings.json 中获取具体配置信息,我还特意看了下项目中是如何实现的????,大体上分两种。

  • 层级读取


services.AddTransient<IDbConnection>(db => new MySqlConnection(Configuration.GetSection("Config")["ConnectionString"]));
  • Options 方式读取

services.Configure<AppSettingConfig>(Configuration.GetSection("Config"));services.Configure<ExternalApiConfig>(Configuration.GetSection("ExternalAPI"));

如果不想定义适配类,那就直接用第一种即可,简单粗暴,如果想使用便捷,体现面向对象思想的话,那就用第二种啦 !!!

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

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

相关文章

java虚拟机工作原理图_Java虚拟机工作原理

首先我想从宏观上介绍一下Java虚拟机的工作原理。从最初的我们编写的Java源文件(.java文件)是如何一步步执行的&#xff0c;如下图所示&#xff0c;首先Java源文件经过前端编译器(javac或ECJ)将.java文件编译为Java字节码文件&#xff0c;然后JRE加载Java字节码文件&#xff0c…

如何快速测试与数据库的连接并得到连接字符串

刚做程序开发的人&#xff0c;常常为如何连接数据库&#xff0c;怎么写连接字符串而困惑。做产品安装的服务人员&#xff0c;也常常为如何快速测试本机与数据库的连接状况而头疼。这里&#xff0c;给出一个简单快速的实现方法&#xff1a;*.udl文件。 第一步&#xff1a;创建“…

奇异值的物理意义是什么?

全世界有3.14 % 的人已经关注了数据与算法之美矩阵奇异值的物理意义是什么&#xff1f;或者说&#xff0c;奇异值形象一点的意义是什么&#xff1f;把m*n矩阵看作从m维空间到n维空间的一个线性映射&#xff0c;是否&#xff1a;各奇异向量就是坐标轴&#xff0c;奇异值就是对应…

WPF使用Animation仿WeChat(微信)播放语音消息

WPF开发者QQ群&#xff1a; 340500857 前言WPF使用Animation仿WeChat&#xff08;微信&#xff09;播放语音消息&#xff1f;效果图&#xff1a;创建MyAnimationForever.cs如下&#xff1a;public class MyAnimationForever : Control{private static Storyboard MyStory;priva…

epublib java_使用Epublib处理epub文件 | 学步园

通过wlw发布在我的博客funba.cn希望csdn能重新支持wlwEpublib是一个用于处理epub文件的java类库&#xff0c;可以对epub文件进行读写处理&#xff1b;而且提供了一个阅读器&#xff0c;可以直接运行(java -jar 方式)&#xff0c;并可以打开epub类型的文件进行阅读。1、这个例子…

php注入详解

本文主要是为小菜们服务的&#xff0c;如果你已经是一只老鸟呢&#xff0c;可能某些东西会感觉比较乏味&#xff0c;但只要你仔细的看&#xff0c;你会发现很多有趣的东西哦。 阅读此文你只要明白下面的这点东西就够了。 1.明白phpmysql环境是如何搭建的&#xff0c;在光盘中…

机器学习的最佳学习路线,就在这里!

AI这个词相信大家都非常熟悉&#xff0c;近几年来人工智能圈子格外热闹&#xff0c;光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域&#xff0c;Python已经成为了主流。一方面因为这门语言简单易上手&#x…

.NET RulesEngine(规则引擎)

一次偶然的机会&#xff0c;让我拿出RulesEngine去完成一个业务&#xff0c;对于业务来说主要是完成一个可伸缩性&#xff08;不确定的类型&#xff0c;以及不确定的条件&#xff0c;条件的变动可能是持续增加修改的&#xff09;的业务判断。比如说完成一个成就系统&#xff0c…

io流图解 java_详细讲解JAVA中的IO流

一、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中&#xff0c;管道是一条不间断的字节流&#xff0c;用来实现程序或进程间的通信&#xff0c;或读写外围设备、外部文件等。一个流&#xff0c;必有源端和目的端&#xff0c;它们可以是计算机内存的某些区域&a…

分段函数 左右 f'正 不等于f'负 则f'导数不存在。所以不能推出f连续是否

根据单侧极限定理。当求分界处函数时。如果 f正f负 那么 f存在。 如果 f正&#xff01;f负 f不存在。 如果 f正或者f负不存在。 则f不一定不存在。单侧极限是可导的充分非必要条件。转载于:https://www.cnblogs.com/friends-wf/articles/2380690.html

Mongo规范

1.【强制】集合中的 key 禁止使用任何 "_"&#xff08;下划线&#xff09;以外的特殊字符。2.【强制】尽量将同样类型的文档存放在一个集合中&#xff0c;将不同类型的文档分散在不同的集合中&#xff1b;相同类型的文档能够大幅度提高索引利用率&#xff0c;如果文档…

java awt区域_java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle

展开全部import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;final class RectPaintDemo extends JFrame {final static private Dimension SIZE new Dimension(800, 600);public String getTitle() {return "RectPaintDemo";}pub…

BPM与Workflow的区别

ItemworkflowBPM流程管理周期设计、执行流程全周期&#xff0c;包括梳理、监控、分析目标用户群体编程人员业务人员、IT技术人员平台化设施流程引擎内核流程、组织、权限、表单、规则、门户、监控、分析等一体化的平台设施应用范围部门级&#xff0c;十余支企业级多级流程层次&…

21个令程序员泪流满面的瞬间【第二弹】

【1】明明我只修改了一行代码... 【2】千万不要随便乱动旧项目【3】提交了错误的分支【4】断点调试BUG【5】当我删除一个无用的代码块【6】糟糕&#xff0c;无法捕获这个BUG【7】当我刚好有一个好点子却被人打断【8】不小心打开了遗留项目【9】费力地捕获一个已知Bug【10】…

大厂出品免费图标资源站

IconPark 字节跳动出品矢量图标样式的开源图标库编程导航开源仓库&#xff1a;https://github.com/liyupi/code-navIconPark 图标库是一个通过技术驱动矢量图标样式的开源图标库&#xff0c;可以实现根据单一 SVG 源文件变换出多种主题&#xff0c; 具备丰富的分类、更轻量的代…

java dos编译命令是什么_在DOS命令行状态下,如果源程序HelloWorld.java在当前目录下,那么编译该程序的命令是()...

【单选题】下列行为中,属于绝对商行为的是【填空题】汽车故障的变化规律可分为3个阶段,早期故障期、 和 。【填空题】无分电器点火线圈与一般点火线圈不同,其 与 没有连接,为互感作用。【简答题】练习函数【单选题】Java编译器的命令是( )【填空题】进气管较长时,压力波传播距离…

Hadoop Streaming 编程

Hadoop Streaming 编程 | 董的博客Hadoop Streaming 编程Category: Hadoop-MapReduceView: 5,678 阅Author: Dong1、概述Hadoop Streaming是Hadoop提供的一个编程工具&#xff0c;它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer&#xff0c;例如&#xff1a;采用…

数学不好、英语不好、非本专业,想学python数据分析,能安排吗?

全世界有3.14 % 的人已经关注了数据与算法之美“非本专业想转型做数据分析&#xff0c;有救吗&#xff1f;”“数学不好&#xff0c;英语不好&#xff0c;想学Python数据分析&#xff0c;有救吗&#xff1f;”“不懂Python数据分析到底是什么&#xff0c;有救吗&#xff1f;”我…

在 .NET 中使用 C# 处理 YAML

在 .NET 中&#xff0c;可以使用 YamlDotNet 类库解析和生成 YAML 文件。YamlDotNet &#xff1a;https://github.com/aaubry/YamlDotNetNuGet 下载&#xff1a;https://www.nuget.org/packages/YamlDotNet/帮助文档&#xff1a;https://github.com/aaubry/YamlDotNet/wiki序列…

js数组去重,合集等操作

<html> <head><script type"text/javascript"> var a[a,b,c]; var b[a,b,d,f]; var arr1 intersection(a,b); alert("a,b的合集-不重复:"arr1); var arr2 chaji(a,b); alert("a与b不重复的部分:"arr2); var arr3 inANotInB…