文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NETCore自定义配置文件

2024-04-02 19:55

关注

前文讲获取配置文件内容的时候,是获取默认的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自定义配置文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯