博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在启动时从配置文件中读取对象
阅读量:3527 次
发布时间:2019-05-20

本文共 1371 字,大约阅读时间需要 4 分钟。

目录


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

介绍

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

背景

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

使用代码

作为一个例子,我已经编写了我的代码,其中通过从appsettings.json读取这些规则作为对象来为配置密码规则。通常情况下,我会对这些设置进行硬编码,因为它们在应用程序的生命周期中很少发生变化,但是在我包含密码生成的项目中,我希望生成的密码符合与为身份配置的密码相同的规则,我认为在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
();services.Configure
(options =>{ options.Password = pwdOpts;});

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

奇迹发生在调用时:

var pwdOpts = pwdSection.Get
()

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

Microsoft.Extensions.Configuration.Binder

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

 

原文地址:

转载地址:http://lzzhj.baihongyu.com/

你可能感兴趣的文章
Java基础入门 Window类及Panel类
查看>>
Java基础入门 AWT事件处理
查看>>
Java基础入门 鼠标事件
查看>>
Java基础入门 键盘事件
查看>>
Java基础入门 GridLayout
查看>>
JavaEE Bean的两种常用作用域 singleton(单例)和prototype(原型)
查看>>
MySQL 数据库索引
查看>>
JavaEE Spring与MyBatis的整合之传统DAO方式整合(教材学习笔记)
查看>>
JavaEE MyBatis与Spring的整合——基于mapper接口方式开发(教材学习笔记)
查看>>
JavaWeb 使用Cookie实现——显示用户上次访问时间(教材学习笔记)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(五)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(六)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(七)
查看>>
Omap138开发板下以uboot2012.04.01为例分析uboot执行(八)
查看>>
中国大学MOOC—陆军工程大学数据结构MOOC习题集(2018秋)7-3 中位数
查看>>
Java发送邮件 注册成功发送邮件
查看>>
Mybatis的简单使用(增删改查),解决数据库字段名和实体类映射属性名不一致的问题
查看>>
Mybatis配置log4j文件 分页查询(limit,rowBounds)
查看>>
Mysql利用注解进行开发
查看>>
Mybatis一对多查询,多对一查询
查看>>