.NET Core配置文件加载与DI注入配置数据

.NET Core配置文件

在以前.net中配置文件都是以app.config / web.config等xml格式的配置文件,而.net core中建议使用以json为格式的配置文件,因为使用起来更加方面灵活,而且可以使用.net core中的di注入配置数据。

使用:

var config = new ConfigurationBuilder()                .AddInMemoryCollection()    //将配置文件的数据加载到内存中                .SetBasePath(Directory.GetCurrentDirectory())   //指定配置文件所在的目录                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)  //指定加载的配置文件                .Build();    //编译成对象              Console.WriteLine(config["test"]);  //获取配置中的数据            config["test"] = "test test";   //修改配置对象的数据,配置对象的数据是可以被修改的            Console.WriteLine(config["test11"]);    //获取配置文件中不存在数据也是不会报错的            Console.WriteLine(config["theKey:nextKey"]);    //获取:theKey -> nextKey 的值

登录后复制

配置文件appsettings.json文件内容:

{  "test": "testVal",  "theKey": {    "nextKey": "keyVal"  }}

登录后复制

注意:

ConfigurationBuilder需要添加包:”Microsoft.Extensions.Configuration”

AddJsonFile需要添加包:”Microsoft.Extensions.Configuration.Json”

 

与DI配合使用

var sp = new ServiceCollection()                .AddOptions()   //注入IOptions,这样就可以在DI容器中获取IOptions了                .Configure(config.GetSection("TestCls"))   //注入配置数据                //也可以对注入的配置数据进行修改                .Configure(t =>                {                    t.Name = "Jame"; //修改Name的值                })                .BuildServiceProvider();    //编译            var test = sp.GetService>();    //获取注入的配置数据对象            Console.WriteLine(JsonConvert.SerializeObject(test.Value));    //{"Name":"Jame","Age":123}            //下面的代码中检验Configure注入的配置数据对象是单例模式的(.NET Core中DI容器的三种生命周期:Singleton(单例), Scoped(作用域), Transient(瞬态))            var test1 = sp.GetService>();            Console.WriteLine(test == test1);   //true            //创建一个新的作用域获取配置数据对象            var test2 = sp.GetService().CreateScope().ServiceProvider.GetService>();            Console.WriteLine(test == test2);   //true

登录后复制

 配置测试类:

         public class TestCls         {             public string Name { get; set; }             public int Age { get; set; }         }

登录后复制

appsettings.json中的内容:

{  "TestCls": {    "Name": "Tom",    "Age": 123  }}

登录后复制

注意:

ServiceCollection需要添加包: “Microsoft.Extensions.DependencyInjection”

AddOptions需要添加包: “Microsoft.Extensions.Options.ConfigurationExtensions”

 

ASP.NET Core中使用

Startup.cs -> Startup构造方法中进行初始化配置文件:

var builder = new ConfigurationBuilder()                .AddInMemoryCollection()                .SetBasePath(env.ContentRootPath)                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);            Configuration = builder.Build();

登录后复制

Startup.cs -> ConfigureServices方法中进行注入配置数据:

services.AddOptions()        //注入IOptions                .Configure(Configuration.GetSection(nameof(TestCls)))                .Configure(test =>                {                    test.Name = "Jame"; //修改Name的值                });

登录后复制

配置文件中的配置数据:

{  "Logging": {    "IncludeScopes": false,    "LogLevel": {      "Default": "Debug",      "System": "Information",      "Microsoft": "Information"    }  },  "TestCls": {    "Name": "Tom",    "Age": 123  }}

登录后复制

注入到控制器中:

[Route("api/[controller]")]    public class ValuesController : Controller    {        IOptions _test;        public ValuesController(IOptions test)        {            _test = test;        }        [HttpGet]        public string Gets()        {            return JsonConvert.SerializeObject(_test.Value);        }

登录后复制

访问:/api/values

显示:{“Name”:”Jame”,”Age”:123}

【相关推荐】

1. .Net Core 之 图形验证码

2. .NET Core CLI工具文档dotnet-publish

3. 详细介绍ZKEACMS for .Net Core

4. 分享.net MVC中使用forms验证实例代码

5. 在.net core 下如何进行http请求?

6. CentOS上运行ZKEACMS的实例教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2445758.html

(0)
上一篇 2025年3月3日 16:13:59
下一篇 2025年2月19日 22:29:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论