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 ...
随机推荐
- 通用权限管理系统组件 (GPM - General Permissions Manager)
有的公司开发人员只那么几个,一个人支撑整个公司所有的IT系统实在有点累,不想自己写权限系统了,自己琢磨不也是要花时间和精力,要为此付出多少时间和汗水阿,细细的皱纹不知要多多少呢,重复建设不是白白浪费生 ...
- Nginx访问日志.Nginx日志切割
11月27日任务 12.10 Nginx访问日志12.11 Nginx日志切割12.12 静态文件不记录日志和过期时间 1.Nginx访问日志 示例一: 日志格式 vim /usr/local/ngi ...
- java程序猿面试系列之jvm专题
前言 因为疫情的影响,现在都变成金五银六了.为了方便大家,在此开一个程序猿面试系列.总结各大公司所问的问题,希望能够帮助到大家,适合初中级java程序猿阅读. 1. Java类实例化时,JVM执行顺序 ...
- Redis 6.0 新特性-多线程连环13问!
Redis 6.0 来了 在全国一片祥和IT民工欢度五一节假日的时候,Redis 6.0不声不响地于5 月 2 日正式发布了,吓得我赶紧从床上爬起来,学无止境!学无止境! 对于6.0版本,Redis之 ...
- jQuery简单竖排手风琴折叠菜单代码
项目需求1.刚开始只显示,每个标题, 2.让每个 li列表隔行换色 3.当我点击某个标题时,下面的列表会缓慢的展开,其他列表展开的内容会收起 <!DOCTYPE html> <htm ...
- S - Query on a tree HDU - 3804 线段树+dfs序
S - Query on a tree HDU - 3804 离散化+权值线段树 题目大意:给你一棵树,让你求这棵树上询问的点到根节点直接最大小于等于val的长度. 这个题目和之前写的那个给你一棵 ...
- saltstack升级
1.背景 saltstack出现安全漏洞,5.1前后爆出很多设备已经变成矿机. 2.处理方法 升级到最新版本salt 3.官方升级方法 yum install https://repo.saltsta ...
- Spring官网阅读(十二)ApplicationContext详解(中)
文章目录 1.Spring的资源(Resource) 接口简介 UML类图 抽象基类AbstractResource FileSystemResource AbstractFileResolvingR ...
- VS Code的安装与配置
VS Code的安装与配置 Visual Studio Code(VS Code)是微软旗下的一个开源文本编辑器,支持Windows.macOS.Linux操作系统.数量众多.种类多样的插件极大提高了 ...
- RabbitMQ的使用(二)- RabbitMQ服务在单机中做集群
RabbitMQ的使用(二)- RabbitMQ服务在单机中做集群 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/128371 ...