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/ ...
随机推荐
- 怎样理解测试指标 :TPS和HPS
TPS(Transaction per second) 是估算应用系统性能的重要依据.其意义是应用系统每秒钟处理完成的交易数量. 一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量. 系统整体处 ...
- 看起来像是break的考量
代码运用了if+break: package day20181008; import java.util.Scanner; public class ZuoYe01 { public static v ...
- 获取RadioButton选中的值
1.RadioButtonList的RepeatDirection="Horizontal"可以设置按扭选项横对齐: 2.获取选中的RadioButton值; $("#& ...
- opencv学习之路(8)、基本图像运算——加减与或
一.图像加法 #include<opencv2/opencv.hpp> #include<iostream> using namespace cv; using namespa ...
- Codeforces 844D Interactive LowerBound - 随机化
This is an interactive problem. You are given a sorted in increasing order singly linked list. You s ...
- 2018年12月7日 字符串格式化2 format与函数1
tp7="i am \033[44;1m %(name)-25.6s\033[0m"%{"name":"sxj2343333"} print ...
- Restful framework【第一篇】RESTful 规范
什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度类审 ...
- 在cygwin下创建的文件位于windows的哪个目录下?
答: 1. C盘的SPB_Data目录下 2. 在cygwin下通过pwd命令可以查看,例如: jello@jello ~ $ pwd /cygdrive/c/SPB_Data (/cygdrive/ ...
- php中的正则函数:正则匹配,正则替换,正则分割 所有的操作都不会影响原来的字符串.
有一个长期的误解, 如果要分组, 必须用 小括号 和 |, 而不能用 中括号 和 |. [ab|AB]表示的不是 匹配 ab或 AB, 而是表示 匹配 a,b, |, A, B 这5个字符中 的任意 ...
- 在linux下手动安装 apache, php, mysql--终极版
在linux下手动安装 apache, php, mysql: 参考: http://www.cnblogs.com/lufangtao/archive/2012/12/30/2839679.html ...