Asp.Net Core 轻松学-玩转配置文件

目录

  • 前言
  • 另类方式使用 hosting.json 使程序运行于多个端口
  • 结语

前言

????在 .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 使程序运行于多个自定义端口

原文地址:https://www.cnblogs.com/owenzh/p/11214013.html

时间: 2024-10-04 06:18:50

Asp.Net Core 轻松学-玩转配置文件的相关文章

Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象

前言 在上一篇文章中(Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库)[https://www.cnblogs.com/viter/p/10243577.html],介绍了 EFCore 连接 MSSQL 的使用方法,在本章中,将继续介绍如何利用 EFCore 连接到 MariaDB/MySql 和 PostgreSQL 数据库,同时,在一个项目中,如何添加多个数据库上下文对象,并在业务中使用多个上下文对象,通过这两章的学习,你将掌握使用 EFCore 连接 MS

Asp.Net Core 轻松学-多线程之Task(补充)

前言 ????在上一章 Asp.Net Core 轻松学-多线程之Task快速上手 文章中,介绍了使用Task的各种常用场景,但是感觉有部分内容还没有完善,在这里补充一下. 1. 任务的等待 在使用 Task 进行基于队列的异步任务(TAP)的时候,对于刚入门的同学来说,只是简单的了解了使用 Task 可以在后台处理异步任务,但是对于阻塞调用可能还有有一些不太明白,异步任务默认是不阻塞的执行过程,当一个 Task 被创建出来的时候,并没有被压入队列中,而是开始执行的时候,才会进入队列中:执行一个

Asp.Net Core 轻松学-从安装环境开始

Asp.Net Core 介绍 ????Asp.Net Core是微软新一代的跨平台开发框架,基友 C# 语言进行开发,该框架的推出,意味着微软从系统层面正式进击 Linux 服务器平台:从更新速度开来看,微软在 Asp.Net Core 的开发上可谓不遗余力. ????从开发者社区看,Asp.Net Core 有多火热,那么在过去 10 年间,C# 的开发者就有多压抑,过去 10 年以来,以 C# 开发语言为主业的开发者,几乎只能游历于所谓的企业级开发,其实就是做 OA.ERP.CRM 等传统

Asp.Net Core 轻松学-HttpClient的演进和避坑

前言 ????在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core 开发团队的话来说就是:我们注意到,HttpClient 被很多开发人员不正确的使用.得益于 .Net Core 不断的版本快速升级:解决方案也一一浮出水面,本文尝试从各个业务场景去剖析 HttpClient 的各种使用方式,从而在开发中正确的使用 HttpClient 进行网络请求. 1.0时代发生的事情 1.1 在 1.0 时代,部署在 L

Asp.Net Core 轻松学-被低估的过滤器

前言 ????过滤器,从我们开始开发 Asp.Net 应用程序开始,就一直伴随在我们左右:Asp.Net Core 提供多种类型的过滤器,以满足多种多样的业务应用场景:并且在 Asp.Net Core 本身,过滤器的应用也非常广泛:但是,在实际的业务场景中,大部分开发人员只使用到其中 1 到 2 种类型,当然,这其中大部分可能性是由于业务场景的适用性使然,本文尝试简单介绍 Asp.Net Core 中提供的各种过滤器,以及实际的应用场景,希望对您有所帮助. 1. 介绍 1.1 作用范围 过滤器的

Asp.Net Core 轻松学-在.Net Core 中使用钩子

前言 ????Host startup hook,是2.2中提供的一项新的功能,通过使用主机启动钩子,允许开发人员在不修改代码的情况下,在服务启动之前注入代码:通过使用钩子,可以对已部署好的服务在服务启动期间自定义托管程序的行为:通过使用钩子,可以对服务进行跟踪或者遥测,也可以在服务启动前对托管环境进行健康检查:还可以通过钩子动态加载程序集进行依赖注入等功能. 什么是钩子 钩子的作用原理是通过设置环境变量 DOTNET_STARTUP_HOOKS 的值将钩子程序挂载到托管程序之中,在托管程序启动

Asp.Net Core 轻松学-多线程之取消令牌

前言 ????取消令牌(CancellationToken) 是 .Net Core 中的一项重要功能,正确并合理的使用 CancellationToken 可以让业务达到简化代码.提升服务性能的效果:当在业务开发中,需要对一些特定的应用场景进行深度干预的时候,CancellationToken 将发挥非常重要的作用. 1. 多线程请求合并数据源 在一个很常见的业务场景中,比如当请求一个文章详细信息的时候,需要同时加载部分点赞用户和评论内容,这里一共有 3 个任务,如果按照常规的先请求文章信息,

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题:但是就是莫名其妙的报错了,这段代码极其简单,就是打开数据库连接,读取一条记录,然后立即更新到数据库中.但是,惨痛的事实证明,老司机也是会翻车的. 1. 异常的发生来得太突然 1.1 引起不舒适的代码片段 [HttpPut] public async void Put([FromBody] TopicViewModel model) { var topic = this.context.Topics.Where

ASP.NET Core 借助 K8S 玩转容器编排

原文:ASP.NET Core 借助 K8S 玩转容器编排 Production-Grade Container Orchestration - Automated container deployment, scaling, and management. 生产级别的容器编排系统--自动化的容器部署.扩展和管理. 1. 引言 由于最近在学习微服务,所以就基于之前docker的基础上把玩一下k8s(Kubernetes),以了解基本概念和核心功能. 2. What's k8s? k8s涉及到很多