Asp.net core 学习笔记 ( Configuration 配置 )
更新 2020-01-11
IOptions 默认值
var config = ServiceProvider.GetService<IOptions<UploadedFilesPathOptions>>();
即便我们忘了 setup (下图), 我们依然会拿到一个对象(上图), 里面的 value 是 default value
services.Configure<UploadedFilesPathOptions>(Configuration.GetSection("UploadedFilesPath"));
https://blog.wille-zone.de/post/is-ioptions-t-bad/
可能这个行为不是很好理解,因为一般上 DI 如果没有 provide, inject 时是返回 null.
文章说如果你不喜欢可以使用 IOption Factory 改掉这个行为...
更新 : 2019-05-05
name options
services.Configure<SlackApiSettings>("Dev", Configuration.GetSection("SlackApi:DevChannel"));
第一个变量是名字, 然后如下获取
public SlackNotificationService(IOptionsSnapshot<SlackApiSettings> options)
{
SlackApiSettings devSettings = options.Get("Dev");
}
identity 就是用了这个手法在 CookieAuthenticationOptions 上哦.
更新 : 2019-05-03
set options in startup config
services.Configure<BusinessOptions>(Configuration.GetSection("Email")) // set from appsetting
.Configure<BusinessOptions>(options => { add more
options.Price = ;
options.Name = "zhu ba jie";
});
参考 : https://cnblogs.com/nianming/p/7083964.html
配置写在 appsettings.json 里头
比如
{
"object": {
"prop": "value"
},
"array": [
{ "prop": "value" }
],
"businessConfig": {
"paypalEmail" : "hengkeat87@gmail.com"
}
}
startup.cs
namespace Project
{
public class BusinessConfig
{
public string paypalEmail { get; set; }
} public class Startup
{
public Startup(IConfiguration configuration)
{
this.configuration = configuration;
} public IConfiguration configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
// 各种获取 config 的方式
var value = configuration["object:prop"];
value = configuration["array:0:prop"];
var obj = configuration.GetSection("object");
value = obj["prop"]; // 绑定类型
string stringValue = configuration.GetValue<string>("object:prop");
BusinessConfig businessConfig = configuration.GetSection("businessConfig").Get<BusinessConfig>(); // 注册到 service 让 control 可以注入
services.Configure<BusinessConfig>(configuration.GetSection("businessConfig"));
}
}
}
controller.cs
public class HomeController : Controller
{
private readonly BusinessConfig businessConfig;
public HomeController( // IOptionsSnapshot 对比 IOptions 特色是更新 config file 时, snapshot 能获取新值, 很奇怪, 不是说 snapshot 吗 ? 怎么反而可以获取到新值...纳闷
IOptionsSnapshot<BusinessConfig> businessConfigOptionsAccessor, // 能
// IOptions<BusinessConfig> businessConfigOptionsAccessor // 不能
)
{
businessConfig = businessConfigOptionsAccessor.Value;
} public IActionResult Index()
{
string paypalEmail = businessConfig.paypalEmail;
return View();
}
}
Configuration 是可以随时 set 的. 要使用 options 获取 config 就一定要执行 services.Configure.
由于 key-vault 只能放在第一层,所以我们通常需要额外功夫 set 进去.
Configuration["email:password"] = Configuration["key-vault-secret-email-password"];
services.Configure<Email>(Configuration.GetSection("email"));
Asp.net core 学习笔记 ( Configuration 配置 )的更多相关文章
- ASP.NET Core 学习笔记 第四篇 ASP.NET Core 中的配置
前言 说道配置文件,基本大多数软件为了扩展性.灵活性都会涉及到配置文件,比如之前常见的app.config和web.config.然后再说.NET Core,很多都发生了变化.总体的来说技术在进步,新 ...
- Asp.Net Core学习笔记:入门篇
Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...
- ASP.NET Core 学习笔记 第一篇 ASP.NET Core初探
前言 因为工作原因博客断断续续更新,其实在很早以前就有想法做一套关于ASP.NET CORE整体学习度路线,整体来说国内的环境的.NET生态环境还是相对比较严峻的,但是干一行爱一行,还是希望更多人加入 ...
- ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
前言 首先感谢小可爱门的支持,写了这个系列的第二篇后,得到了好多人的鼓励,也更加坚定我把这个系列写完的决心,也能更好的督促自己的学习,分享自己的学习成果.还记得上篇文章中最后提及到,假如服务越来越多怎 ...
- ASP.NET Core 学习笔记 第五篇 ASP.NET Core 中的选项
前言 还记得上一篇文章中所说的配置吗?本篇文章算是上一篇的延续吧.在 .NET Core 中读取配置文件大多数会为配置选项绑定一个POCO(Plain Old CLR Object)对象,并通过依赖注 ...
- Asp.net Core学习笔记
之前记在github上的,现在搬运过来 变化还是很大的,感觉和Nodejs有点类似,比如中间件的使用 ,努力学习ing... 优点 不依赖IIS 开源和跨平台 中间件支持 性能优化 无所不在的依赖注入 ...
- Asp.net core 学习笔记 ( Data protection )
参考 : http://www.cnblogs.com/xishuai/p/aspnet-5-identity-part-one.html http://cnblogs.com/xishuai/p/a ...
- Asp.net core 学习笔记 ( Web Api )
asp.net core 把之前的 webapi 和 mvc 做了结合. mvc 既是 api. 但是后呢,又发现, api 确实有独到之处,所以又开了一些补助的方法. namespace Proje ...
- Asp.net core 学习笔记 ( IIS, static file 性能优化 )
更新 : 2019-02-06 最后还是把 rewrite 给替换掉了. 所以 rewrite url 也不依赖 iis 了咯. refer : https://docs.microsoft.com/ ...
随机推荐
- ora-12705解决方法
最近使用instant sqlplus测试时,遇到ora-12705,一开始以为是少了配置,经查是,NLS_LANG设置问题,设置为"SIMPLIFIED CHINESE_CHINA.ZHS ...
- ssh客户端连接报认证失败
最近有个应用在并发导出的时候,报错了ssh认证失败,原来串行的时候都正常,经查,可能是ssh连接数不够的原因,这个问题刚好之前有个java开发反馈过,linux默认的ssh连接数为10个. 解决如下: ...
- springmvc StringHttpMessageConverter 中文乱码的几种解决办法(亲测)
昨天,将一个原来使用JSR 311作为restful实现的测试系统改成了使用spring mvc,最后测试的时候发现输出的json字符串为乱码,从日志可以看出使用的是StringHttpMessage ...
- 翻译 Improved Word Representation Learning with Sememes
翻译 Improved Word Representation Learning with Sememes 题目 Improved Word Representation Learning with ...
- Introduction To Machine Learning Self-Evaluation Test
Preface Section 1 - Mathematical background Multivariate calculus take derivatives and integrals; de ...
- 【Python023/024--递归】
一.递归--汉诺塔 1.有三个轴(x,y,z),64个盘子,把所有盘子从X轴移动到Z轴,要求移动到Z轴的盘子从上到下排序 思路: 问题一:将X上的63个盘子借助Z移动到Y上,拆解为: a.将前62个盘 ...
- git克隆源码时提示fatal: HTTP request failed怎么办?
答: 升级git版本即可 centos下升级git的方法在此
- UVALive 7512 November 11th 题解
思路:心态大崩,最多不讲了,最少应该是三个一组,比如......应该是.S..S.,这样占的最多 代码: #include<set> #include<map> #includ ...
- 【入门】Gradle的基本使用、在IDEA中的配置、常用命令
一.介绍 java的源码构建工具,大致经历了 ant -> maven -> gradle 这个过程,每一次进步,都是在解决之前的工具所带来的问题,简单来说: 1. ant 功能虽然也很强 ...
- 【C#】委托中的匿名函数与lambda
将方法作为方法的参数 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使 ...