4.1 配置
自定义配置特别注意
如:xxxx.json
,必须在 VS Studio
中右键属性设置 复制
输出目录为如果较新则复制
,生成操作为:内容
。
#
4.1.1 什么是配置简单来说,配置将系统应用可动态调配的选项放在统一地方管理,通过不同的配置让系统做出动态调整。
在 ASP.NET Core
应用程序启动时默认加载 启动项目
下的 appsettings.json
作为应用配置。同时还支持不同的运行环境加载对应的配置文件,如:
Development
:加载appsettings.Development.json
Staging
:加载appsettings.Staging.json
{Environment}
:appsettings.{Environment}.json
#
4.1.2 配置的使用假设我们需要在系统运行时获取系统名称、版本号及版权信息,这些信息可能随时变化而且需要在多个地方使用。这时就需要将这些信息配置起来。具体步骤如下:
appsettings.json
信息#
4.1.2.1 配置 特别注意
appsettings.json
复制输出目录为如果较新则复制
,生成操作为:内容
。
appsettings.json
信息#
4.1.2.2 读取 在 Furion
框架中,提供了两种读取方式:
- 依赖注入
IConfiguration
对象读取 - 通过
App.Configuration[jsonKey]
读取
- App.Configuration[jsonKey]
- 依赖注入方式
依赖注入的方式
#
4.1.2.3 如何选择读取方式- 在可依赖注入类中,依赖注入
IConfiguration
读取 - 在静态类/非依赖注入类中,选择
App.Configuration[jsonKey]
读取
路径符
查找节点#
4.1.3 在 ASP.NET Core
中,配置采用 :
分隔符来读取分层配置数据。如上述例子中的 AppInfo:Name
。如有更多层级数据则只需要通过 :
进入下一层节点即可。
假设我们有以下配置信息:
- 读取第二层
- 读取第三层
- 读取第四层
- 读取第N层
#
4.1.4 自定义配置文件大多情况下,我们的配置只需要在 appsettings.json
中配置即可,但一些特殊情况下,我们希望某些组件或功能拥有独立的配置,这个时候就需要用到自定义配置,Furion
目前支持 .json
和 .xml
两种方式配置,如:
xml 配置事项
如果采用 xml
配置,那么文件名必须以 .config.xml
结尾(不区分大小写)。
特别说明
Furion
框架会在启动时自动扫描每一个项目层根目录下的 *.json
和 *.xml
文件加入配置中,所以无需手工配置。
新增 *.json
和 *.xml
文件的属性复制到输出目录
设置为始终复制或较新复制,否则不会载入。另外配置文件不能出现重名,也就是保证整个项目中配置文件名字唯一。
同时 Furion
提供了非常灵活的方式支持自定义配置文件读取,如:
emailsetting.json
配置#
4.1.4.1 读取 读取自定义配置文件和读取 appsettings.json
一致,系统会自动从多个配置文件中读取输入,如:
- App.Configuration[jsonKey]
- 依赖注入方式
#
4.1.4.2 排除特定配置文件有些时候,我们不需要 .json
或 .xml
自动载入配置中,我们只需要在启动层 appsettings.json
中添加 IgnoreConfigurationFiles
节点即可:
#
4.1.5 不同环境读取在实际应用开发中,我们可能会根据不同的环境加载不同的配置文件,如 数据库连接字符串
。
这时我们只需要遵循特定命名规范 {name}.{Environment}.json
即可。如:
appsettings.Development.json
appsettings.Staging.json
appsettings.Production.json
emailsetting.Development.json
emailsetting.Staging.json
emailsetting.Production.json
这时,ASP.NET Core
会在应用启动时自动加载不同环境的配置文件。
热更新
)#
4.1.6 配置更改通知(在 .NET Core
应用程序中,配置支持更改通知,也就是热更新操作。一旦监听到 appsetting.json
或自定义配置文件发生变动,就会触发 OnChange
方法。代码如下:
#
4.1.7 配置的优缺点优点
- 能够在系统运行时快速读取
- 无需额外配置
缺点
- 存在重复读取
- 通过硬编码字符串读取,容易出错
- 不能设置默认值
- 不能在运行环境中动态配置
- 不能验证配置有效性
- 不支持更改通知
#
4.1.8 配置使用场景如果只需要一次性读取配置信息,则使用配置,否则应该使用 《4.2 选项》代替。
#
4.1.9 反馈与建议与我们交流
给 Furion 提 Issue。
了解更多
想了解更多 配置
知识可查阅 ASP.NET Core - 配置 章节。