DotNetCore跨平台~在appsettings.json里自定义配置项
2017-08-17 16:08
344 查看
回到目录
DotNetCore里一切都是依赖注入的,对于appsettings这个可扩展的配置对象也不例外,它位于项目根目录,一般在startup里去注册它,在类中通过构造方法注入来获取当前的对象,以便去使用它,当然我们也可以自己去构建和使用它,下面我就来总结一下。
2 在appsettings里添加它的内容
3 在控制器里使用它,当然你可以在基类中定义它的使用方式,但注入的入口还是在构造方法上
这时,你的AppConfiguration在被加载后,就有值了,是在程序运行时被注入进来的!
在控制器上,可以直接使用它了,我这个属性是做在所有控制器的父类上的。
感谢各位的阅读!
对于.net core的研究我们还在继续,希望core2.0,standard2.0不会让我们失望!
听说它已经实现了.net frameworks 4.6.1所有的功能!
回到目录
DotNetCore里一切都是依赖注入的,对于appsettings这个可扩展的配置对象也不例外,它位于项目根目录,一般在startup里去注册它,在类中通过构造方法注入来获取当前的对象,以便去使用它,当然我们也可以自己去构建和使用它,下面我就来总结一下。
传统方法,startup注入,构造方法使用
1 注意配置类public class RedisConfiguration { #region 属性成员 /// <summary> /// 文件上传路径 /// </summary> public string Host { get; set; } /// <summary> /// 允许上传的文件格式 /// </summary> public string Password { get; set; } /// <summary> /// 图片上传最大值KB /// </summary> public int IsProxy { get; set; } #endregion }
2 在appsettings里添加它的内容
{ "Logging": { "IncludeScopes": false, "Debug": { "LogLevel": { "Default": "Warning" } }, "Console": { "LogLevel": { "Default": "Warning" } } }, "RedisConfiguration": { "Host": "localhost:6379", "Password": "bobo123#", "IsProxy": "0" } }
3 在控制器里使用它,当然你可以在基类中定义它的使用方式,但注入的入口还是在构造方法上
public class ApiControllerBase : Controller { private readonly IOptions<RedisConfiguration> AppConfiguration; public ApiControllerBase(IOptions<RedisConfiguration> appConfiguration) { AppConfiguration = appConfiguration; } }
这时,你的AppConfiguration在被加载后,就有值了,是在程序运行时被注入进来的!
属性中注入并且使用
appsetting的内容不变,只是在属性中去封装了配置注入与获取的过程,注意,为了考虑性能,你可以把它的建立和获取做成单例,这点我就不设计了!public RedisConfiguration AppConfigurations { get { var config = new ConfigurationBuilder() .AddInMemoryCollection() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .Build(); var sp = new ServiceCollection().AddOptions().Configure<RedisConfiguration>( config.GetSection("RedisConfiguration")).BuildServiceProvider(); var _appConfiguration = sp.GetService<IOptions<RedisConfiguration>>(); return _appConfiguration.Value; } }
在控制器上,可以直接使用它了,我这个属性是做在所有控制器的父类上的。
[HttpGet] public IEnumerable<string> Get() { return new string[] { AppConfigurations.Host, AppConfigurations.Password, AppConfigurations.IsProxy.ToString() }; }
感谢各位的阅读!
对于.net core的研究我们还在继续,希望core2.0,standard2.0不会让我们失望!
听说它已经实现了.net frameworks 4.6.1所有的功能!
回到目录
相关文章推荐
- DotNetCore跨平台~关于appsettings.json里各种配置项的读取
- DotNetCore跨平台~关于appsettings.json里各种配置项的读取
- DotNetCore跨平台~Dockerfile的解释
- DotNetCore跨平台~认识环境和环境变量
- DotNetCore跨平台~问题~NETCoreAPP, Version=v1.0' compatible with one of the target runtimes: 'win10-x64
- DotNetCore跨平台~Quartz定时单次任务
- DotNetCore跨平台~Quartz热部署的福音~监控文件夹的变化
- DotNetCore跨平台~Dapper的使用
- DotNetCore跨平台~Moq框架实现模拟测试
- DotNetCore跨平台~配置文件与配置代码如何共存
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析与配置系统
- DotNetCore跨平台~xUnit生成xml报告
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- DotNetCore跨平台~EFCore连接Mysql的方式
- DotNetCore跨平台~功能测试TestHost的使用
- DotNetCore跨平台~2.0提前发布喽
- DotNetCore跨平台~EFCore2.0连接Mysql的烦恼-已解决
- DotNetCore跨平台~一起聊聊Microsoft.Extensions.DependencyInjection
- DotNetCore跨平台~性能测试~可以放心使用了
- [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析