当前位置: 首页 > 编程笔记 >

.Net Core3.0 配置Configuration的实现

班承德
2023-03-14
本文向大家介绍.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;

运行输出:

到此这篇关于.Net Core3.0 配置Configuration的实现的文章就介绍到这了,更多相关.Net Core3.0 配置Configuration内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 在上一章中,我们已经看到Laravel的基本配置文件包含在config目录中。 在本章中,我们将讨论配置中包含的类别。 环境配置 环境变量是为Web应用程序提供Web服务列表的变量。 所有环境变量都在.env文件中声明,其中包含初始化配置所需的参数。 默认情况下, .env文件包含以下参数 - APP_ENV = local APP_DEBUG = true APP_KEY = base64:ZP

  • ASP.NET应用程序的行为受配置文件中的不同设置的影响: machine.config web.config machine.config文件包含所有支持设置的默认值和计算机特定值。 机器设置由系统管理员控制,通常不允许应用程序访问此文件。 但是,应用程序可以通过在其根文件夹中创建web.config文件来覆盖默认值。 web.config文件是machine.config文件的子集。 如果应用

  • 在本章中,我们将向您展示如何根据您的需求配置Aurelia框架。 有时,在将应用程序呈现给用户之前,您需要设置初始配置或运行一些代码。 第1步 - 创建main.js 让我们在src文件夹中创建main.js文件。 在这个文件中我们将配置Aurelia。 您还需要告诉Aurelia加载配置模块。 您可以在以下示例中看到注释部分。 的index.html <!DOCTYPE html> <html>

  • CakePHP默认带有一个配置文件,我们可以根据需要进行修改。 为此目的,有一个专用文件夹“config” 。 CakePHP提供了不同的配置选项。 一般配置 下表描述了各种变量的作用以及它们如何影响CakePHP应用程序。 S.No 变量名称和描述 1 debug 更改CakePHP调试输出。 false =生产模式。 未显示任何错误消息,错误或警告。 true =显示的错误和警告。 2 App

  • 在设置站点之后,我们应该做的下一件事是配置站点。 application/config文件夹包含一组用于设置站点基本配置的文件。 配置基本URL 可以在application/config/config.php文件中配置站点的基本URL。 它是CodeIgniter根的URL。 通常,这将是您的基本URL,带有斜杠,例如 http://example.com/ 如果未设置,则CodeIgnite

  • 前一章解释了log4j的核心组件。 本章介绍如何使用配置文件配置核心组件。 配置log4j涉及分配Level,定义Appender以及在配置文件中指定Layout对象。 log4j.properties文件是一个log4j配置文件,它将属性保存在键值对中。 默认情况下,LogManager在CLASSPATH查找名为log4j.properties的文件。 根记录器的级别定义为DEBUG 。 DE