DotNetCore跨平台~在appsettings.json里自定义配置项
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": ""
  }
}
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里各种配置项的读取
		
回到目录 对于dotnet Core来说,依赖注入的集成无疑是最大的亮点,它主要用在服务注册与注入和配置文件注册与注入上面,我们一般会在程序入口先注册服务或者文件,然后在需要的地方使用注入即可,下面主 ...
 - asp.net core 获取appsettings.json里的配置
		
public GoodsController(IConfiguration configuration) { Configuration = configuration; UpFileDir = Co ...
 - asp.net core 读取appsettings.json配置项
		
1.新建一个asp.net core 项目 2.打开appsettings.json,加入配置项 { "Logging": { "IncludeScopes": ...
 - asp.net core mvc 读取配置文件appsettings.json
		
上一篇我们将了读取自定义配置文件.这篇我们讲一下asp.net core mvc里读取自带的配置文件 appsettings.json 首先创建个asp.net core mvc项目,项目里有Prog ...
 - .Net Core 读取配置文件 appsettings.json
		
1. 首先些一个类 public class MySettings { public string P1 { get; set; } public string P2 { get; set; } } ...
 - ASP.NET Core读取appsettings.json配置文件信息
		
1.在配置文件appsettings.json里新增AppSettings节点 { "Logging": { "LogLevel": { "Defau ...
 - DotNetCore跨平台~Startup类的介绍
		
新宠儿 DotNetCore是.net5.0版本,之所以不叫.net5.0为的就是不让我们把它与前面的.net混为一淡,它将是真正意义的跨平台开发语言,在网上也有相关介绍,中国的一些大牛也发了相关文章 ...
 - ASP.NET Core开发-读取配置文件Configuration appsettings.json
		
https://www.cnblogs.com/linezero/p/Configuration.html ASP.NET Core 是如何读取配置文件,今天我们来学习. ASP.NET Core的配 ...
 - IT咨询顾问:一次吐血的项目救火    java或判断优化小技巧    asp.net core Session的测试使用心得    【.NET架构】BIM软件架构02:Web管控平台后台架构    NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json   使用LINQ生成Where的SQL语句  js_jquery_创建cookie有效期问题_时区问题
		
IT咨询顾问:一次吐血的项目救火 年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...
 
随机推荐
- 「SDOI 2018」战略游戏
			
题目大意: 给一个$G=(V,E)$,满足$|V|=n$,$|E|=m$,且保证图联通,有Q个询问,每组询问有s个点,求图中有多少点满足:将其删去后,这s个点中存在一对点集$(a,b)$不联通且删去点 ...
 - 【游戏开发】小白学Lua——从Lua查找表元素的过程看元表、元方法
			
引言 在上篇博客中,我们简单地学习了一下Lua的基本语法.其实在Lua中有一个还有一个叫元表的概念,不得不着重地探讨一下.元表在实际地开发中,也是会被极大程度地所使用到.本篇博客,就让我们从Lua查找 ...
 - laravel 查询数据返回的结果
			
laravel查询数据返回的结果 在插入数据库的时候,发现查询数据返回的结果是一个对象;即使是空数据 返回的不是true或者false 那么要判断该结果是否查询有结果 该如果呢? 学习源头: http ...
 - ActiveMQ详解
			
Apache ActiveMQ介绍 使用MQ的场景 ActiveMQ的安装 收发消息的简单实现 ActiveMQ内部实现 queue和topic 消息持久化 kahadb原理 最关键的6个配置 Apa ...
 - ReentrantLock之非公平锁源码分析
			
本文分析的ReentrantLock所对应的Java版本为JDK8. 在阅读本文前,读者应该知道什么是CAS.自旋. 由于ReentrantLock的公平锁和非公平锁中有许多共同代码,本文只会对这两种 ...
 - 使用Mybatis实现动态SQL(一)
			
使用Mybatis实现动态SQL 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 写在前面: *本章节适合有Mybatis基础者观看* 前置讲解 我现在写一个查询全部的 ...
 - python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
			
在学习python语言中用json库解析网络数据时,我遇到了两个编译错误:json.decoder.JSONDecodeError: Expecting property name enclosed ...
 - github下载和上传项目
			
git下载和上传项目 下载: git clone +地址 上传: 1.git init 在当前项目的目录中生成本地的git管理(多一个.git文件夹,为隐藏文件) 2.git add .(注意最后面有 ...
 - 别开心太早,Python 官方文档的翻译差远了
			
近几天,很多公众号发布了 Python 官方文档的消息.然而,一个特别奇怪的现象就发生了,让人啼笑皆非. Python 文档的中文翻译工作一直是“默默无闻”,几个月前,我还吐槽过这件事<再聊聊P ...
 - 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch
			
很多小步快跑的公司,开发人员多则3-4个,面对巨大业务压力,日连夜的赶着上线,快速试错,自然就没时间搭建一些基础设施,比如说logCenter,但初期 项目不稳定,bug又多,每次都跑到生产去找日志 ...