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 ...
随机推荐
- Linux 搭建nginx的PID
pid logs/nginx.pid 安装的时候就是没有,其实在启动 nginx 时自动生成的 里面存放的是 当前 nginx 住进程的 ID 号:所以在配置文件中指定pidpid /usr/loca ...
- Codeforce-Ozon Tech Challenge 2020-D. Kuroni and the Celebration(交互题+DFS)
After getting AC after 13 Time Limit Exceeded verdicts on a geometry problem, Kuroni went to an Ital ...
- 数学--数论--Miller_Rabin判断一个大数是不是素数(随机算法)
前提知识 1,费马定理:ap−1=1(mod p)a^{p-1}=1(mod\ p)ap−1=1(mod p)
- 图论--差分约束--POJ 1201 Intervals
Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 30971 Accepted: 11990 Descripti ...
- python——random.sample()的用法
写脚本过程中用到了需要随机一段字符串的操作,查了一下资料,对于random.sample的用法,多用于截取列表的指定长度的随机数,但是不会改变列表本身的排序: list = [0,1,2,3,4] r ...
- POJ3169(差分约束:转载)
转载自mengxiang000000传送门 Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10278 Ac ...
- Q - Play With Sequence HDU - 3971 线段树 重新排序建树
Q - Play With Sequence HDU - 3971 这个题目是一个线段树,比较特别的线段树,就是c询问一定次数之后重新排序建树来优化减低复杂度. 第一次碰到这种题目有点迷. 这个题目写 ...
- 【T-SQL】基础——操作
--删除表 如果已经存在USE master--检查是否已经存在一个表,如果有就删除IF(EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TA ...
- 【Kafka】自定义分区策略
自定义分区策略 思路 Command+Option+shift+N 调出查询页面,找到producer包的Partitioner接口 Partitioner下有一个DefaultPartitioner ...
- Owin Katana 的底层源码分析
最近看了一下开源项目asp.net katana,感觉公开的接口非常的简洁优雅,channel 9 说是受到node.js的启发设计的,Katana是一个比较老的项目,现在已经整合到asp.net c ...