zoukankan      html  css  js  c++  java
  • .Net Core读取自定义配置文件

    比如有个自定义json配置文件:SettingsBuiltin.json

    {  
      "OIDC": {
        "Host": "http://localhost:8020",
        "Https": false,
        "ClientId": "Workspace",
        "ClientSecret": "bf88b9d30eca4f84be20b7744b2b3573",
        "Scopes": [
          "openid",
          "profile",
          "security",
          "org_profile",
          "ad_profile",
          "iam_profile",
          "access_oaplus"
        ],
        "ClaimMaps": [
          {
            "ClaimType": "displayName",
            "JsonKey": "display_name"
          },
          {
            "ClaimType": "nickname",
            "JsonKey": "nickname"
          }
        ]
      }
    }

    Program.cs

    public static IWebHostBuilder CreateWebHostBuilder(string[] args, CancellationTokenSource cancellation) =>
    WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((context, config) =>
    {
      config.AddJsonFile("settings/Builtin.json", false, false);
    })
    .UseStartup<Startup>();

    Startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<OpenIdConnectOption>(Configuration.GetSection("OIDC"));

        var provider = services.BuildServiceProvider();

    var oidcOption = provider.GetRequiredService<IOptions<OpenIdConnectOption>>().Value;        
    }
    OpenIdConnectOption 类的结构如下:
        public class OpenIdConnectOption
        {
            public string Host { get; set; }
            public bool Https { get; set; }
            public string ClientId { get; set; }
            public string ClientSecret { get; set; }
            public string[] Scopes { get; set; }
            public ClaimMap[] ClaimMaps { get; set; }
        }
    
        public class ClaimMap
        {
            public string ClaimType { get; set; }
            public string JsonKey { get; set; }
        }

    另外分享一个读取默认配置的工具类

    using Microsoft.Extensions.Configuration;
    using System.IO;
    
    namespace EIP.Core.DataAccess
    {
        public static class AppsettingsConfig
        {
            public static IConfiguration Configuration { get; set; }
    
            static AppsettingsConfig()
            {
                Configuration = new ConfigurationBuilder()
                       .SetBasePath(Directory.GetCurrentDirectory())
                       .AddJsonFile("appsettings.json", true, reloadOnChange: true).Build();
            }
    
            public static string GetConfigValue(string key)
            {
                return Configuration[key];
            }
        }
    }

    使用方法:

    var setting = AppsettingsConfig.GetConfigValue("Token:Secret")
  • 相关阅读:
    用GD库生成高质量的缩略图片[转载]
    Linux流量监控工具 iftop (最全面的iftop教程)
    数据库开发数据库使用连接池
    过去时的那些硬件和软件
    关于及时回收(GC)系统资源的析构对象的的示例
    控制好节奏,踏实做好每件事
    如何管理IIS,自动创建WEB SITE,应用程序池
    数据库开发数据库的Data Base connection 简单池功能启示
    .Net MSMQ在分布式中的应用
    高并发高负载网站的系统架构注意的问题
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/12221004.html
Copyright © 2011-2022 走看看