目录

介绍

背景

使用代码


如何从Web应用程序的配置文件反序列化对象

介绍

本技巧揭示了一种非常简单的方法,可以将Web应用程序的配置文件的各个部分作为对象读取,而无需选择模式或依赖注入。

背景

在ASP.NET Core中,很容易在配置文件中配置一组相关设置,通常是appsettings.json,要反序列化为类并注入DI客户端。然而,显然,简单地从该文件反序列化对象并在DI容器完全初始化之前使用它并不简单。

使用代码

作为一个例子,我已经编写了我的代码,其中通过从appsettings.json读取这些规则作为对象来为ASP.NET身份配置密码规则。通常情况下,我会对这些设置进行硬编码,因为它们在应用程序的生命周期中很少发生变化,但是在我包含密码生成的项目中,我希望生成的密码符合与为身份配置的密码相同的规则,我认为在appsettings.json存储这些密码选项会很好。

这是我在配置文件中存储密码规则的方法:

{"ConnectionStrings": {"DefaultConnection": "Server=localhost;Database=Flair;Trusted_Connection=True;MultipleActiveResultSets=true"},"Logging": {"LogLevel": {"Default": "Warning"},},"Authentication": {"PasswordRules": {"RequiredLength": 8,"RequiredUniqueChars": 2,"RequireNonAlphanumeric": false,"RequireLowercase": false,"RequireUppercase": false,"RequireDigit": true}},"AllowedHosts": "*"
}

这就是我在Startup.cs读取这些设置和配置Identity的方法:

var pwdSection = Configuration.GetSection("Authentication:PasswordRules");
var pwdOpts = pwdSection.Get<PasswordOptions>();
services.Configure<IdentityOptions>(options =>
{options.Password = pwdOpts;
});

被配置的IdentityOptions的options.Password属性是类的简单对象PasswordOptions。我所要做的就是确保配置文件的“ Authentication:PasswordRules”部分是对象的序列化。

奇迹发生在调用时:

var pwdOpts = pwdSection.Get<PasswordOptions>()

除非我在项目中包含以下NuGet包,否则这通常是不可能的。

Microsoft.Extensions.Configuration.Binder

这个StackOverflow 答案很好地揭示了这一点。

原文地址:https://www.codeproject.com/Tips/1272142/Reading-Objects-From-the-Config-File-at-Startup

在启动时从配置文件中读取对象相关推荐

  1. java object取数据_java使用ObjectInputStream从文件中读取对象

    import java.io.EOFException; import java.io.FileInputStream; import java.io.FileNotFoundException; i ...

  2. java代码中出现黑色画线_从对象流中读取对象,请在画线处加入代码完成此程序【 】。 import java.util.*; import ja...

    从对象流中读取对象,请在画线处加入代码完成此程序[ ]. import java.util.*; import ja 更多相关问题 [问答题,简答题] "三好一满意"是什么? [单 ...

  3. Feign从配置文件中读取url

    Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了: ${rpc.url} @FeignClient(name = "me",url ...

  4. 【Spring Boot】从配置文件中读取配置参数

    前言 在生产环境中,经常会用到各种各样的参数,为了避免代码太过死板,一般将参数写入配置文件,然后需要用到参数的时候从配置文件中读取,下面总结出几种从配置文件中读取配置参数的方法. 环境搭建 现有配置文 ...

  5. Spring—使用类加载从配置文件中读取配置

    引言   SpringBoot中可以使用@Value直接resources目录下的配置文件中读取相关配置参数.但是非微服务模式下,可以使用类加载机制进行获取. 模板 public class Prop ...

  6. java从配置文件中读取参数

    java从配置文件中读取参数的方式 有的时候我们需要将一些固定的配置信息写到yml文件中去,然后在类中在读取 #首先就得先在yml文件中配置参数 upload:param:"test&quo ...

  7. springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值

    SpringBoot现在基本上都是使用application-XXX.yml(生产环境为pro,开发测试环境为dev)来配置项目中的一些配置条件,在springboot中还可以通过从yml文件中将ym ...

  8. python如何调用参数配置文件_【Python学习笔记七】从配置文件中读取参数

    将一些需要经常更改的参数存放在配置文件中,通过读取配置文件来获取参数,这样修改以及使用起来比较方便 1.首先是配置文件的写法,如下一个environment.ini文件: a:里面"[]&q ...

  9. 使用Flink时从Kafka中读取Array[Byte]类型的Schema

    使用Flink时,如果从Kafka中读取输入流,默认提供的是String类型的Schema: val myConsumer = new FlinkKafkaConsumer08[String](&qu ...

最新文章

  1. 建立新冠病毒群体免疫屏障——数学建模
  2. 硬件断点 DrxHook
  3. django模型的字段类型和关系
  4. hdu4027Can you answer these queries?
  5. Oracle Comment 获取并修改表或字段注释
  6. LeetCode – Refresh – Exceel Sheet Column Number
  7. Mac上设置图片或视频的默认打开软件的方法
  8. 基于51单片机的超声波倒车雷达防撞系统 proteus仿真 LCD1602显示
  9. 局部光照与全局光照的区别
  10. 图像影音型计算机主板选择什么,开启4K新时代 七款家用影音主板推荐
  11. 电子料盘 电容 物料标识识别
  12. 用java 把字符串写进文本,Java将字符串写入文本文件代码示例
  13. 从键盘输入若干个学生成绩,计算出平均成绩。
  14. 卷积神经网络(CNN)详解
  15. 抽象类是不是必须要有抽象方法
  16. ROS学习笔记---ros的通信机制
  17. linux服务器使用certbot免费安装ssl证书
  18. 图书管理系统-数据库设计
  19. 01:高斯噪声和椒盐噪声
  20. Vultr centost7一键安装BBR工具教程

热门文章

  1. 喜庆传统中国红色纹理背景,吉庆节日必备!
  2. 东方韵味传统迎接新年|旭日东升的吉利日出好运插画素材模板
  3. 什么?你的电商网页不够时尚?看这里
  4. UI设计素材之按钮和选框,悠闲素材帮你轻松搞定设计。
  5. 平面设计师如何利用图片素材提升工作效率
  6. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  7. 如何判断 cxgrid 双击了哪一列_学会根据三视图判断组成几何体的个数,助你中考数学满分...
  8. python的random模块怎么写_Python常用标准库之random模块
  9. QT 在最新版mac下无法显示变量的问题处理
  10. libcap-ng库旨在使具有posix功能的编程比传统的libcap库容易得多