.NET Core自定义配置文件

 更新时间:2022年07月07日 07:51:55   作者:AZRNG  
这篇文章介绍了.NET Core自定义配置文件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前文讲获取配置文件内容的时候,是获取默认的appsettings.json配置文件的配置,下面说明下如何进行自定义配置文件获取

1. Json Provider

1.1 构建独立的IConfiguration

编写方法

        public static IConfigurationRoot LoadSettings(this IHostEnvironment env)
        {
            return new ConfigurationBuilder()
                 .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                 .AddJsonFile("common.json", optional: true, reloadOnChange: false)
                 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
                 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: false)
                 .AddEnvironmentVariables()
                 .Build();
        }

在Startup构造函数的时候进行赋值替换IConfiguration

        private readonly IConfiguration _configuration;
        public Startup(IWebHostEnvironment env)
        {
            _configuration = env.LoadSettings();
        }

该操作添加的配置项,只在startup范围生效。

1.2 在Progrom全局自定义配置

    public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                var env = hostingContext.HostingEnvironment;
                config.SetBasePath(env.ContentRootPath);
                config.AddJsonFile("devappsettings.json", optional: false, reloadOnChange: true);
            })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

注意:添加自定义文件的目录要注意,可能会存在因为目录问题所以找不到配置文件的情况。

2. Memory Provider

允许我们将一个应用程序配置直接配置到内存中,而不是像传统方式那样子必须制定一个物理文件。

            var builder = new ConfigurationBuilder();
            var profileCollection = new Dictionary<string, string>
            {
                {"AuthorProfile:FirstName", "Joydip"},
                {"AuthorProfile:LastName", "Kanjilal"},
                {"AuthorProfile:Address", "Hyderabad, India"}
            };
            builder.AddInMemoryCollection(profileCollection);
            Configuration = builder.Build();

使用

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                var builder = new ConfigurationBuilder();
                var profileCollection = new Dictionary<string, string>
            {
                {"AuthorProfile:FirstName", "Joydip"},
                {"AuthorProfile:LastName", "Kanjilal"},
                {"AuthorProfile:Address", "Hyderabad, India"}
            };
                builder.AddInMemoryCollection(profileCollection);
                config.AddConfiguration(builder.Build());
            })
            .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

然后就可以通过IConfiguration实例去获取了。

3. 公共类获取配置文件

引用组件

Microsoft.Extensions.Configuration.Json

    public class AppSettings
    {
        private static IConfiguration Configuration { get; set; }

        public AppSettings(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        /// <summary>
        /// 封装要操作的字符
        /// </summary>
        /// <param name="sections"></param>
        /// <returns></returns>
        public static string GetValue(params string[] sections)
        {
            try
            {
                if (sections.Any())
                    return Configuration[string.Join(":", sections)];
            }
            catch (Exception)
            { }
            return "";
        }

        /// <summary>
        /// 递归获取配置信息数组
        ///引用 Microsoft.Extensions.Configuration.Binder 包
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sections"></param>
        /// <returns></returns>
        public static List<T> App<T>(params string[] sections)
        {
            List<T> list = new List<T>();
            Configuration.Bind(string.Join(":", sections), list);
            return list;
        }
    }

ConfigureServices中配置

services.AddSingleton(new AppSettings(Configuration));

获取指定配置

var info = AppSettings.GetValue("Logging", "LogLevel");

到此这篇关于.NET Core自定义配置文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • asp.net 生成静态页时的进度条显示

    asp.net 生成静态页时的进度条显示

    本文侧重点在讲解生成静态页的“进度条”,所以将采用模拟的方法。生成静态时需要生成的文章必须非常多,否则进度条可能一闪而过,看不到效果。
    2009-05-05
  • DataGridView展开与收缩功能实现

    DataGridView展开与收缩功能实现

    我们今天将要讲到DataGridView之行的展开与收缩,包括功能是如何实现的,感兴趣的小伙伴们可以参考一下
    2015-09-09
  • Repeater与ListView功能概述及使用介绍

    Repeater与ListView功能概述及使用介绍

    Repeater(foreach)用于对绑定数据源中的数据进行遍历并按格式显示,Repeater一般只用来展示数据ListView会自动生成很多模板,免去手写模板代码的麻烦,感兴趣的你可以了解下本文
    2013-02-02
  • ajaxToolkit:ModalPopupExtender演示及实现代码

    ajaxToolkit:ModalPopupExtender演示及实现代码

    ajaxToolkit:ModalPopupExtender可以让用户模拟新开一个窗口,就是在模拟新开窗口作多项选项的功能,感兴趣的朋友可以了解下,希望此文对你有所帮助
    2013-01-01
  • ASP.NET向Javascript传递变量两种实现方法

    ASP.NET向Javascript传递变量两种实现方法

    ASP.NET向Javascript传递变量两种实现方法,需要的朋友可以参考下
    2012-12-12
  • 在ASP.NET中连接SQL Server的简单方法

    在ASP.NET中连接SQL Server的简单方法

    在ASP.NET中访问SQL Server数据库有两种方法,它们是System.Data.OleDb和System.Data.SqlClient.下面这段程序以System.Data.SqlClient为例访问本地数据库服务器.
    2013-04-04
  • Asp.NET页面中事件加载的先后顺序详解

    Asp.NET页面中事件加载的先后顺序详解

    这篇文章主要给大家介绍了关于Asp.NET页面中事件加载的先后顺序,文中通过图文以及示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • ASP.NET MVC实现图片上传、图片预览显示

    ASP.NET MVC实现图片上传、图片预览显示

    这篇文章主要为大家详细介绍了ASP.NET MVC实现图片上传、图片预览显示的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • ASP.NET Core中实现全局异常拦截的完整步骤

    ASP.NET Core中实现全局异常拦截的完整步骤

    这篇文章主要给大家介绍了关于ASP.NET Core中如何实现全局异常拦截的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)

    linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)

    在上一篇中,我们做了基于linq to sql 的多条件组合查询,但通过监视数据库发现,这样做的成本比较高,每次都要取出全部的数据到内存进行筛选.
    2011-08-08

最新评论