.Net Core3.0 配置Configuration

原文:.Net Core3.0 配置Configuration

准备

.NET core和.NET项目配置上有了很大的改变,支持的也更加丰富了比如命令行,环境变量,内存中.NET对象,设置文件等等。.NET项目我们常常把配置信息放到webConfig 或者appConfig中。配置相关的源码https://github.com/aspnet/Extensions;如果打开源码项目 如果遇到以下错误,未遇到直接跳过。

错误提示: error : The project file cannot be opened by the project system, because it is missing some critical imports or the referenced SDK cannot be found. Detailed Information:

解决办法:查看本地安装的sdk 与 global.json中制定的版本是否一致:然后修改即可

开始

新建个Asp.net Core web应用程序系统默认创建了appsettings.json ;在应用启动生成主机时调用CreateDefaultBuilder方法,默认会加载appsettings.json。代码如下:

public static IHostBuilder CreateDefaultBuilder(string[] args)
        {
            var builder = new HostBuilder();
?
            builder.UseContentRoot(Directory.GetCurrentDirectory());
            builder.ConfigureHostConfiguration(config =>
            {
                config.AddEnvironmentVariables(prefix: "DOTNET_");
                if (args != null)
                {
                    config.AddCommandLine(args);
                }
            });
?
            builder.ConfigureAppConfiguration((hostingContext, config) =>
            {
                var env = hostingContext.HostingEnvironment;
?
                config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
?
                if (env.IsDevelopment() && !string.IsNullOrEmpty(env.ApplicationName))
                {
                    var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
                    if (appAssembly != null)
                    {
                        config.AddUserSecrets(appAssembly, optional: true);
                    }
                }

利用 GetValue,GetSection,GetChildren读取appsettings.json 键值对 。我们打开appsettings.json文件:

将文件读入配置时,会创建一下唯一的分层健来保存配置值:

  • Logging:LogLevel:Default
  • Logging:LogLevel:System
  • Logging:LogLevel:Microsoft
  • Logging:LogLevel:Microsoft.Hosting.Lifetime
  • AllowedHosts

 var jsonValue = $"AllowedHosts:{_config["AllowedHosts"]}"+ "\r\n";
            jsonValue += "Logging:LogLevel:Default:" + _config.GetValue<string>("Logging:LogLevel:Default")+ "\r\n";
?
            //GetSection 返回IConfigurationSection;如果未匹配到 返回null
            //jsonValue += "---" + _config.GetSection("Logging:LogLevel:System");
            jsonValue += "Logging:LogLevel:System:" + _config.GetSection("Logging:LogLevel:System").Value+ "\r\n\n";

            var logSection = _config.GetSection("Logging:LogLevel");
            var configurationSections = logSection.GetChildren();
            foreach (var sections in configurationSections)
            {
                jsonValue += $"{sections.Path}:{sections.Value}";
                jsonValue += "\r\n";
            }
            jsonValue += "\r\n";

 

配置指定json文件绑定至类

新建一个json文件-AAAppSettings.json

{
  "AA": {
    "RabbitMqHostUrl": "rabbitmq://localhost:5672",
    "RabbitMqHostName": "localhost",
    "RabbitMqUserName": "admin",
    "RabbitMqPassword": "123"
  }
}

使用ConfigureAppConfiguration方法配置指定的json文件

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.SetBasePath(Directory.GetCurrentDirectory());
                config.AddJsonFile("AAAppSettings.json", optional: true, reloadOnChange: true);
            })

使用bind方法绑定到新建的类上如:

 public partial class AAConfig
    {
        public string RabbitMqHostUrl { get; set; }
        public string RabbitMqHostName { get; set; }
        public string RabbitMqUserName { get; set; }
        public string RabbitMqPassword { get; set; }
    }

var aaConfig = new AAConfig();
_config.GetSection("AA").Bind(aaConfig);
jsonValue += aaConfig.RabbitMqHostUrl + "\r\n";
jsonValue += aaConfig.RabbitMqHostName + "\r\n";
jsonValue += aaConfig.RabbitMqUserName + "\r\n";
jsonValue += aaConfig.RabbitMqPassword + "\r\n";
return jsonValue;

运行输出:

原文地址:https://www.cnblogs.com/lonelyxmas/p/11749919.html

时间: 2024-11-04 07:26:57

.Net Core3.0 配置Configuration的相关文章

.Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器

原文:.Net Core 3.0后台使用httpclient请求网络网页和图片_使用Core3.0做一个简单的代理服务器 目标:使用.net core最新的3.0版本,借助httpclient和本机的host域名代理,实现网络请求转发和内容获取,最终显示到目标客户端! 背景:本人在core领域是个新手,对core的使用不多,因此在实现的过程中遇到了很多坑,在这边博客中,逐一介绍下.下面进入正文 正文: 1-启用httpClient注入: 参考文档:https://docs.microsoft.c

【转】lucene4.3.0 配置与调试

lucene4.3.0 配置与调试 demo lucene的最新版本是4.3.0, http://www.apache.org/dyn/closer.cgi/lucene/java/4.3.0 lucene-4.3.0.zip, 1 Lucene下载与配置 全文检索引擎Lucene安装非常简单,配置完成相关的JDK环境,只需下载最新的开发包,并指定相关的路径即可支持开发和检索服务了. 1.    下载lucene系统 访问官方网站http://lucene.apache.org/,可以获取最新发

centos 安装glassfish4.0 配置jdbc连接mysql

版本glassfish-4.0.zip 1.解压,拷贝到指定安装路径 unzip glassfish-4.0.zip  cp cp glassfish4 /usr/local/ -rf 2.设置glassfish环境变量 vim  /etc/profile export GLASSFISH_HOME=/usr/local/glassfish4 export PATH=.:$PATH:$JAVAHOME/bin:$MYSQLHOME/bin:$GLASSFISH_HOME/bin source /

kafka0.9.0及0.10.0配置属性

问题导读 1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置? borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segment).一个日志是一个FileMessageSet,它包含了日志数据以及OffsetIndex对象,该对象使用位移来读取日志数据 * borker配置就是指配置server.properties文件 * 最小配置 通常情况下需要在减压缩kafka后,修改config/server.proper

spss statistics 19.0配置odbc连接远程oracle数据库

本文档讲的是spss statistics 19.0如何配置odbc连接本地oracle数据库,步骤如下: 1.开启远程oracle数据库服务,开启以下两个即可 2.在本地客户端中,安装好oracle数据库(版本为win32_11gr2_client,主要是为了安装oracle的odbc驱动),通过PL/SQL客户端远程连接数据库,测试是否正常. 在D:\app\Administrator\product\11.1.0\client_1\network\admin目录中,新建tnsnames.o

hadoop2.0 配置yarn成功

很久不写 BO-KE 了,来一篇吧,记住这个成功的一刻,把几个主要文件贴出来: core-site.xml: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <config

.NET Core3.0开发Liunx桌面应用程序

.NET Core3.0开发Liunx桌面应用程序主要是依靠GTK. 什么是GTK? GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发.跨平台的图形工具包.最初是为GIMP写的,已成为一个功能强大.设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一.并且,GTK+也有Windows版本和Mac OS X版. 传送门:https://github.com/GtkSharp/ 开始使用 1.下载运行时 https://github.com/G

解决 .NET CORE3.0 MVC视图层不即时编译

微软官方文档 Razor 编译 Razor SDK 默认启用 Razor 文件的生成时和发布时编译. 启用后,运行时编译将补充生成时编译,允许更新 Razor 文件(如果对其进行编辑). 运行时编译 为所有环境和配置模式启用运行时编译: 安装 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包. 更新项目的 Startup.ConfigureServices 方法以包含对 AddRazorRuntimeCompilation 的调用

定时器_在.net core3.0 webapi中添加自定义定时器功能

原文:定时器_在.net core3.0 webapi中添加自定义定时器功能 前言:想在.net framework环境使用自定义定时器的话,参考我的另一篇文章:https://www.cnblogs.com/lxhbky/p/10242839.html 想在.net core中使用定时器功能,需要借助一个服务接口:IHostedService,   继承并实现对应方法,最后再setup.cs类中添加注册服务:services.AddHostedService<实现服务类>();   既然要写