Asp.Net Core入门之配置文件
ASP.NET Core配置框架已内建支持 JSON、XML 和 INI 配置文件,内存配置(直接通过代码设置值),环境变量配置等方式配置参数。
本文主要和大家讲一下我们在项目中常用的以配置文件的方式进行配置。本文以.NetCore2.2为例
配置文件包含了如下几种常用方式。
1.使用ASP.NET Core框架自带的IConfiguration应用程序配置,通过构造函数的方式注入并使用选择模式使用配置参数:Configuration[参数名称]
2.使用选项IOptions和配置对象方式
当你创建了一个Web API应用程序的时候,ASP.NET Core框架会默认为你提供一个配置文件:appsettings.json,并且框架默认指向了该配置文件;但是当你创建例如控制台应用程序的时候,可能就需要我们手动添加配置文件,并手动指向该配置文件。
指定项目配置文件方式:
在项目的Program文件中,添加ConfigureAppConfiguration中的代码:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostcontext, config) =>
{
//获取项目环境
var env = hostcontext.HostingEnvironment;
config.SetBasePath(env.ContentRootPath);
//指定项目配置文件 属性reloadOnChange表示配置文件发生变化的时候,项目自动重新加载。
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
})
.UseStartup<Startup>();
对于指定多配置环境的项目(主要有开发环境Development和生产环境Production),可使用如下方式:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostcontext, config) =>
{
//获取项目环境
var env = hostcontext.HostingEnvironment;
config.SetBasePath(env.ContentRootPath);
//指定项目配置文件 属性reloadOnChange表示配置文件发生变化的时候,项目自动重新加载。
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
//指定项目不同环境下使用哪个配置文件(env.EnvironmentName主要有开发环境Development和生成环境Production),对于指定环境的配置文件非常有用
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
//启用多环境配置
config.AddEnvironmentVariables();
})
.UseStartup<Startup>();
指定配置文件之后,我们便可以具体使用配置参数:
针对如下配置文件appsettings.json:获取WebOptions—Name节点值
{
"WebOptions": {
"Name": "Production"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
方式一,通过构造函数的方式注入IConfiguration配置接口,并使用
public class Test : ITest
{
private readonly IConfiguration configuration;
//构造函数方式注入
public Test(IConfiguration _configuration)
{
configuration = _configuration;
}
public Task<string> Get()
{
//以选择模式的方式获取配置参数
var name = configuration["WebOptions:Name"];
//返回
return Task.FromResult(name);
}
}
方式二·:使用选项IOptions和配置对象方式
首先,添加配置文件对应的实体类。这里的类名,属性名要对应配置文件参数名称。
public class WebOptions
{
public string Name { get; set; }
}
然后,在Start文件ConfigureServices类中,注册与Option绑定的配置实例。
public void ConfigureServices(IServiceCollection services)
{
//注册WebOptions配置实例
services.Configure<WebOptions>(Configuration.GetSection(nameof(WebOptions)));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
最后,通过构造函数注入Options绑定配置,并使用。
public class Test : ITest
{
private readonly WebOptions webOptions; /// <summary>
/// 构造函数注入
/// </summary>
/// <param name="_webOptions"></param>
public Test(IOptions<WebOptions> _webOptions)
{
webOptions = _webOptions.Value;
} public Task<string> Get()
{
//以对象的方式获取参数值
var name = webOptions.Name;
return Task.FromResult(name);
}
}
好了,关于ASP.NET Core中常用的配置文件参数配置方式就介绍到这里。
Asp.Net Core入门之配置文件的更多相关文章
- ASP.NET Core 入门教程 10、ASP.NET Core 日志记录(NLog)入门
一.前言 1.本教程主要内容 ASP.NET Core + 内置日志组件记录控制台日志 ASP.NET Core + NLog 按天记录本地日志 ASP.NET Core + NLog 将日志按自定义 ...
- CentOS开发ASP.NET Core入门教程
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9891346.html 因为之前一直没怎么玩过CentOS,大多数时间都是使用Win10进行开发,然后程序 ...
- ASP.NET Core入门(一)
大家好,很荣幸您点了开此篇文章,和我一起来学习ASP.NET Core,此篇文字为<ASP.NET Core入门>系列中的第一篇,本系列将以一个博客系统为例,从第一行代码,到系统发布上线( ...
- 【翻译】ASP.NET Core 入门
ASP.NET Core 入门 原文地址:Introduction to ASP.NET Core 译文地址:asp.net core 简介 翻译:ganqiyin ...
- ASP.NET CORE 入门教程(附源码)
ASP.NET CORE 入门教程 第一课 基本概念 基本概念 Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架 符合Web应用特点 .NET Core跨平台解决方案 ...
- Asp.net Core 入门实战
Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架. Asp.net Core官网的一个合集,方便一次性Clone 目录 快速入门 安装 一个最小的应用 项目模板 路由 静态文件 ...
- ASP.NET Core开发-读取配置文件Configuration
ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 使用Visual Studio Code开发基于解决方案(sln+csproj)的项目 Visual ...
随机推荐
- Nakamori Akina
听过中森明菜的歌以后,一直想写点什么.恰好前段时间看过她的一个访谈https://b23.tv/av13810011,节目里已经39岁左右的她看着已经有些衰老,但是那份属于她的天真却保持的很好. 节目 ...
- 2019.06.18训练日记(赞FLS)
之前打了几场比赛,有很多题没做出来,这些题无论是知识点不会,还是说在当时时间和思路的影响下没有做出来,这都应该做出来,至少现在必须做出来,本来打算专心复习,分数高了,好保研,但是想了想如果局限于只把学 ...
- 图论--网络流--最大流 洛谷P4722(hlpp)
题目描述 给定 nn 个点,mm 条有向边,给定每条边的容量,求从点 ss 到点 tt 的最大流. 输入格式 第一行包含四个正整数nn.mm.ss.tt,用空格分隔,分别表示点的个数.有向边的个数.源 ...
- 《新版阿里巴巴Java开发手册》提到的三目运算符的空指针问题到底是个怎么回事?
最近,阿里巴巴Java开发手册发布了最新版--泰山版,这个名字起的不错,一览众山小. 新版新增了30+规约,其中有一条规约引起了作者的关注,那就是手册中提到在三目运算符使用过程中,需要注意自动拆箱导致 ...
- Spring中资源的加载原来是这么一回事啊!
1. 简介 在JDK中 java.net.URL 适用于加载资源的类,但是 URL 的实现类都是访问网络资源的,并没有可以从类路径或者相对路径获取文件及 ServletContext , 虽然可以通过 ...
- pytest文档38-allure.setp添加测试用例步骤
前言 一般流程性的测试用例,写成自动化用例时,步骤较多写起来会比较长.在测试用例里面添加详细的步骤有助于更好的阅读,也方便报错后快速的定位到问题. 举个常见的测试场景用例:从登陆开始,到浏览商品添加购 ...
- LoadRunner安装时提示缺少C++ 2005 SP1(x86)插件
把安装文件里的所有中文文件重命名为英 文 名就ok!!! 把安装文件里的所有中文文件重命名为英 文 名就ok!!! 把安装文件里的所有中文文件重命名为英 文 名就ok!!! 重要的事情说三遍! 不插图 ...
- SpringBoot:整合SpringSecurity
目录 SpringSecurity(安全) 搭建环境 使用 用户认证和授权 注销及权限控制 记住我及登录页面定制 SpringBoot 整合 SpringSecurity: 用户认证和授权.注销及权限 ...
- maven基本配置
1.maven 是一个项目构建工具,如果在公司做大的项目 ,需要把项目拆分成很多子项目,为了方便各子项目之间协同开发和调试,一般都会使用maven.使用maven和以前web项目最大的不同是jar包的 ...
- 常用中文分词工具分词&词性标注简单应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)
1.jieba分词&词性标注 import jieba import jieba.posseg as posseg txt1 =''' 文本一: 人民网华盛顿3月28日电(记者郑琪)据美国约翰 ...