前言
在 .NET Core 项目中, 配置文件有着举足轻重的地位; 与. NetFramework 不同的是,.NET Core 的配置文件都以 .JSON 结尾, 这表示一个标准的 JSON 格式的文件; 一个标准的 ASP.NET Core MVC 项目, 一定带着一个 appsettings.JSON 文件, 该文件便是项目默认配置文件, 这和基于 .NetFramework 创建的 ASP.NET web Application (默认配置名称: App.config) 有着根本的不同, 今天我们就学习如何添加自定义配置到文件中, 并把该配置在程序中读取出来; 然后再通过使用 host.JSON 这个配置文件使程序运行于多个端口.
1. appsettings.JSON 文件
1.1 appsettings.JSON 文件是一个标准的 JSON 结构的文件, 这表示你只要按照 JSON 的结构写入该文件, 无论什么内容, 都能在程序中自动读取, 当我们创建好 MVC 项目后, 系统就自动帮我们创建好 appsettings.JSON 文件, 其默认内容如下:
- {
- "Logging": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "AllowedHosts": "*"
- }
1.2 下面我们加一个配置节点 "book":"博客园精华文章选集"
- {
- "Logging": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "AllowedHosts": "*",
- "book":"博客园精华文章选集"
- }
1.3 在控制器 Controllers/HomeController.cs 中将该节点内容设置为网页标题输出, 记得引用命名空间
using Microsoft.Extensions.Configuration;
在 Index 方法中加入参数 IConfiguration, 如下
- public IActionResult Index([FromServices]IConfiguration cfg)
- {
- return View();
- }
1.4 输入命令 dotnet run 启动项目, 结果如下, 读取自定义配置成功
1.5 将配置文件节点转换为实体类
我们常常有这样的需求, 在配置文件中做了一堆配置, 但是又不想逐个读取, 太麻烦, 如果能转换为实体类就好了, 其实 IConfiguration 就自带了该天赋, 看下面的配置
- {
- "Logging": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "AllowedHosts": "*",
- "book":"博客园精华文章选集",
- "customer":{
- "name":"ron.liang",
- "gender":"man",
- "job":"coder"
- }
- }
定义实体类
- public class Customer{
- public string Name { get; set; }
- public string Gender{get;set;}
- public string Job{get;set;}
- }
转换为实体类, 可以看到, 已经转换成功, 对象属性都已获得了值
另类方式使用 hosting.JSON 使程序运行于多个端口
2.1 定义 hosting.JSON 文件
在实际的开发中, 程序运行必需定义清晰的端口, 不能使用随机模式, 这个时候, 我们可以利用 hosting.JSON 文件来定义, 无论程序发布到何处, 永远以该文件定义的端口来运行, 首先在项目根目录下创建一个 hosting.JSON 文件, 并填入以下内容.
- {
- "server.urls": "http://0.0.0.0:12006;http://0.0.0.0:12007"
- }
2.2 修改 Program.cs 方法
- public static IWebHostBuilder CreateWebHostBuilder(string[] args)
- {
- var hostConfiguration = new ConfigurationBuilder().AddJsonFile("hosting.json").Build();
- return WebHost.CreateDefaultBuilder(args)
- .UseStartup<Startup>()
- .UseConfiguration(hostConfiguration);
- }
以上方法将刚才创建的 hosting.JSON 加入配置中, 并指定程序启动使用该配置文件
2.2 删除 Properties 目录下的 launchSettings.JSON 文件
2.3 运行项目, 可以看到, 现在项目侦听端口 12006/12007
结语
通过本文, 我们学习到了以下内容
1. 知道了 appsettings.JSON 的作用, 以及如何从配置文件中读取项目配置节点
2. 如何通过 IConfiguration 把配置节点转换为实体对象
3. 使用 hosting.JSON 使程序运行于多个自定义端口
努力为开源社区作贡献, 推荐一个自己开发的基于 .netcore+pgsql 的快速开发脚手架, 内置 ORM 框架, GitHub 地址: https://github.com/lianggx/mystaging
文中如有疏漏之处, 欢迎指正.
来源: https://www.cnblogs.com/viter/p/10034597.html