ASP.NET Core 3.x 学习笔记(3)——配置信息的使用

ASP.NET Core调试模式:3个技巧快速查看连接信息! 想象一个场景:你正在开发一个ASP.NET Core应用,突然发现数据库连接失败!此时,你会选择:问题是:ASP.NET Core的调试模式真的能帮你快速查看连接信息吗?原理:ASP.NET Core的接口是配置信息的“万能钥匙”,可通过依赖注入获取所有配置值。实战案例: 墨式吐槽:是配置的“总开关”,但需注意不同环境下的优先级(如 > )。原理:ASP.NET Core的日志系统可输出所有配置加载过程,包括连接字符串的来源和值。实战案例: 运行效果: 墨式冷笑话:日志是程序员的“侦探笔记”,没看日志的 阅读详情

本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:
https://www.bilibili.com/video/BV1c441167KQ

ASP.NET Core 3.x 学习笔记(3)——配置信息的使用

ASP.NET Core 的配置信息

  • 配置信息以 Key-Value 键值对的形式存在

  • 配置信息可以存放在内存里、JSON、XML、INI 等文件,或者系统环境变量

  • 配置信息与配置系统是解耦的

  • 可以依赖注入

ASP.NET Core 的配置信息源

  • appsettings.json
    • appsettings.{Environment}.json
  • Secret Manager
  • 环境变量
  • 命令行参数

ASP.NET Core 会从上述四个信息源自上而下依次查找配置信息,若四个信息源中有重复的配置信息,则下面的会覆盖上面的。

使用配置信息实现字体加粗

通过设置配置信息,使部门员工大于等于20人时,部门名称加粗显示。设置可用于整个项目中。

通过 appsettings.json 实现

appsettings.json 是 ASP.NET Core 项目默认使用的配置文件;在 appsettings.json 下有 appsettings.{Environment}.json 可设置项目不同环境下的配置信息,如开发环境:appsettings.Development.json。

若 appsettings.json 和 appsettings.{Environment}.json 中配置有相同的配置信息,则后者会覆盖前者的。

在这里插入图片描述

  1. 在 appsettings.json 中加上设置配置信息 BoldDepartmentEmployeeCountThreshold,限定部门人数在 20 人以上是,部门名称粗体显示。

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "ASPNETCore_Learning_Three": {
        "BoldDepartmentEmployeeCountThreshold": 20
      }
    }
    
  2. 在 Startup.cs 中添加配置,引入配置信息,使其可以在项目中被使用。

    public Startup(IConfiguration configuration)
    {
        this._configuration = configuration;
    }
    

    而在此处添加 ASPNETCore_Learning_Three 进项目有两种方法:

    • 直接在 Startup() 中添加:

      public Startup(IConfiguration configuration)
      {
          this._configuration = configuration;
          var ASPNETCore_Three = _configuration["ASPNETCore_Learning_Three:BoldDepartmentEmployeeCountThreshold"];
      }
      
    • 在 C# 这种强类型的语言中,尽量使用强类型,可以避免一些不必要的错误,故将上面这句代码映射到一个具体的类 ThreeOptions。

      ThreeOptions.cs

      namespace ASPNETCore_Learning_Three
      {
          public class ThreeOptions
          {
              public int BoldDepartmentEmployeeCountThreshold { get; set; }
          }
      }
      

      在 Startup.cs 类中的 ConfigureServices(IServiceCollection services) 中配置 ThreeOptions

      public void ConfigureServices(IServiceCollection services)
      {
          //配置 ThreeOptions,使项目全局都可以使用对应的 ASPNETCore_Learning_Three 配置
          services.Configure<ThreeOptions>(_configuration.GetSection("ASPNETCore_Learning_Three"));
      }
      
  3. 配置好后即可在项目中使用。

    • 在 Controller 中使用,在对应的构造函数中注入即可。如下:

      public DepartmentController(IDepartmentService departmentService, IOptions<ThreeOptions> threeOptions) 
      {
          _departmentService = departmentService;
      }
      
    • 在 Razor View 中使用:在对应的视图中引入配置信息即可。如下代码即可实现上文所说的,部门名称字体加粗的效果:

      @using ASPNETCore_Learning_Three.Models
      @using Microsoft.Extensions.Options
      @using ASPNETCore_Learning_Three
      
      @model Department
      
      @inject IOptions<ThreeOptions> options
      
      <tr>
          @if (Model.EmployeeCount >= options.Value.BoldDepartmentEmployeeCountThreshold)
          {
              <td><strong>@Model.Name</strong></td>
          }
          else
          {
              <td>@Model.Name</td>
          }
          <td>@Model.Location</td>
          <td>@Model.EmployeeCount</td>
      
          <td>
              <a asp-controller="Employee" asp-action="Index" asp-route-departmentId="@Model.Id">
                  Employees
              </a>
          </td>
      </tr>
      

效果如下:

在这里插入图片描述

自定义配置信息源的 json 文件

如果不想使用 appsettings.json,可自己建立配置信息源的 json 文件,并在 Program.cs 中的 CreateHostBuilder() 方法中进行配置。如下 ConfigureAppConfiguration :

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace ASPNETCore_Learning_Three
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((context, configBuilder) => 
                {
                    configBuilder.Sources.Clear();  //清理之前的配置信息源,其它的源就都不起作用了
                    configBuilder.AddJsonFile("sqwh.json");  //配置自己的配置信息源
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

运行效果如下:

其中所有部门名称都加粗了,因为当前设置的配置文件 sqwh.json 为空,页面上取值的 BoldDepartmentEmployeeCountThreshold 为 0,则所有部门均满足条件。

在这里插入图片描述

ASP.NET Core 中使用 EF Core For PGSQL .NET Core 中使用 EF Core For PGSQL 开发环境: 系统:win10 家庭普通版 开发工具:VS2019 社区版 目标框架:DotNet Core 3.1 前言 本文介绍在.NET Core项目中使用EF Core(ORM框架 又叫 对象和关系的映射器)针对于PG(PostgreSQL)数据库的增删查改的操作。 1准备项目 在vs中创建一个ASP.NET Core的项目,并NuGet程序包管理器中安装以下程序包 Npgsql.EntityFrameworkCore.PostgreSQ 阅读详情

相关推荐

ASP.NET Core 入门教程 1、使用ASP.NET Core 构建第一个Web应用

一、前言 1、本文主要内容 Visual Studio Code 开发环境配置 使用 ASP.NET Core 构建Web应用 ASP.NET Core Web 应用启动类说明 ASP.NET Core Web 项目结构说明 2、本教程环境信息 软件/环境 说明 操作系统 Windows 10 SDK 2.1.401 ASP.NET Core 2.1.3 IDE V...

ken的杂谈 2115

ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习

ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习MVC 相关技术ModelsServicesControllersViewsDepartmentEmployee ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习 本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下: https://www.bilibili.com/video/BV1c441167

SQWH_SSGS的博客 1028

ASP.NET Core 3 框架剖析 - 生命周期

前言 微软在今年9月份发布了NET Core 3.0,增加如下的重大改进: 使用.NET Core可以开发Windows桌面应用,支持对Winform和WPF(可打包单个应用) 基于span和UTF-8完全重写了JSON APIs,不在依赖于Json.NET 支持在 树莓派 和 ARM 芯片中进行loT开发 垃圾回收采用更少的内存 同时,也发布了 ASP.NET Core 3.0 和 EF Co...

码途茶馆 1455

asp.net收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……)

/********************************************************************************** * * 功能说明:收集机器硬件信息的相关代码片断(cpu频率、磁盘可用空间、内存容量……) * 作者: 刘功勋; * 版本:V0.1(C#2.0);时间:2007-1-1 * * **************************

cxb_wind的专栏 949

Linux之SUSE系统SAP-HANA经常系统内存不足使得SAP应用不能使用解决方案

问题描述 Linux内存使用量超过阈值,使得sap应用程序无可用内存,最终导致程序崩溃。 问题原因 自己查阅了一些资料,也基于zabbix的可用内存和实际不太一样入手去找原因发现问题出现于Cached的值过大,导致系统没有可以再分配的内存空间。Cached只要用来缓存文件的,经常读写的文件会被缓存到Cached中,可以增加读写效率,该功能是Linux系统内核提供的,而SAP-HANA的日志文件很大...

liuxiangyang_的博客 6711

SAP中成本估算没有找到工艺路线消息处理实例

在针对成品的标准成本核算处理过程中,系统中会经由设定好的策略来收集成品相关成本组成,最终计算出产成品的标准成本。关于成本组成,可以归纳为三个基本要素,料,工,费。即标准成本就是要知道,生产一件成品,需要消耗多少钱的原材料?消耗多少钱的人工?以及其它的间接消耗? 某日,接到CO同事的反馈,在用CK11N做产成品标准价格核算时,提示没有工艺路线确定,但该消息为绿灯,可以通过。基于业务上的谨慎,提出分析。 从提示可以看出问题与工艺路线有关。因为,成品工艺路线中设定有成品生产所耗工时,所以,在计算产成品标准

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6280

.net Core中如何读取Appsetting配置文件

现在APPSetting下面配置以下节点{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "Conn": "Host=10.10.1.15;Port=5

milo0305 1万+

海康威视 2DC 系列球机手机直连实用教程

海康威视2DC系列球机手机直连教程:首先确认设备支持直连功能并下载官方"海康互联"App;通过网线连接球机与路由器,使用SADP软件调整IP至同一网段;在App中添加设备并激活,完成调试即可远程查看监控画面。常见问题包括部分型号需远程解锁、网络连接异常等,可通过检查网络环境、联系客服等方式解决。本教程提供从准备到连接的完整指引,助您轻松实现手机监控管理。

海康威视技术支持 5412

Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

首先:这个讲的是.net Core3.X系列的,如果是Core2.x的版本,那么就不能按照这个下载了,需要下载对应的2.x的版本。我在其他文章中也有说明,具体的2.x版本的如何部署IIS https://blog.csdn.net/xulong5000/article/details/99587702 第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用。   官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tut.

xulong5000的专栏 3323

OpenCV卡尺工具实战:5步搞定工业级圆与直线拟合(附完整C++源码)

本文详细介绍了使用OpenCV卡尺测量工具实现工业级圆与直线拟合的5个关键步骤,包括核心原理、环境配置、边缘点提取优化、鲁棒性几何拟合实现及QT集成技巧。通过模块化C++源码和实战案例,帮助开发者快速掌握高精度尺寸测量技术,适用于机械零件、PCB板等工业检测场景。

uran的专栏 843

西门子 标准程序解读---> 机器手抓取和涂胶控制程序

摘要 该程序实现机械手在OP70/OP90工位的自动化控制,核心功能包括: 流程控制:分段(Seg1-Seg11)管理抓件、涂胶、放件等动作,结合DB1050/DB1250数据块监控工位状态及变位机位置反馈。 安全机制:配置干涉区(FC124)、实时检测安全光/急停信号,防止碰撞;服务程序(FB191)支持维修位触发与安全隔离。 参数配置:通过DB块关联机器人速度、节拍(FB27)、车型编码(如空过=2)及手自动模式(DB70.DBX21.2)。 应用场景:适用于汽车焊接/装配线

工控智联驿站 1239

什么是Asp.net Core?和 .net core有什么区别?

什么是Asp.Net core 我相信很多C# Developer已经对于.net core不算陌生了,就算没有正式使用相信也应该有所了解。微软在推出来.net core的同时为了方便一些原有的项目可以方便迁移,同时推出了Asp.net core。那么.net core和Asp.net core是不是同一个东西呢?如果不是又有什么区别呢? 下面我们分别说明一下,首先Asp.net core和.net core肯定不是同一个东西(废话,如果是同一个东西还写这么多干啥!)。 Asp.net core其实就是仍然

极客神殿 3万+

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

Asp.Net Core3.x中使用Cookie

在Asp.Net中使用Cookie相对容易使用,Request和Response对象都提供了Cookies集合,要记住是从Response中存储,从Request中读取相应的cookie。Asp.Net Core3.x中Cookie相对不是直接使用,Asp.Net属于大礼包方式把你要的不要的通通给你(比较臃肿_(¦3」∠)_),而在Asp.Net Core3.x中属于自选行的项目中需要什么自己引用什么(比较清爽简洁(#^.^#)),我们今天就说说在Asp.Net Core中如何使用Cookie。 ...

dotNet疯狂之路 775

面经-2023-联发科MTK-数字芯片设计

面经-2023-联发科MTK-数字芯片设计

w0shishabi的博客 2944

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

简述关于ASP.NET MVC与.NET CORE 的区别

简述关于ASP.NET MVC与.NET CORE的区别 1、关于ASP.NET 关于MVC 刚开始接触这个技术的时候我经常不理解他们的名字,我相信许多学ASP.NET开发人员开始接触MVC应该也和我一样产生很多为什么,也会误认为认为MVC与ASP.NET完全没有关系,是一个全新的Web开发,深入学习后我才知道事实上ASP.NET是创建WEB应用的框架而MVC是能够用更好的方法来组织并管理代码的一...

吴朋个人博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

asp.net core 3.1.x 中使用AutoMapper

AutoMapper作用 AutoMapper的作用是把一个对象转化为另一个对象,避免每次都去转化; 使用DTO实现表现层与领域Model的解耦,用AutoMapper来实现DTO与领域Model的相互转换; 基于访问性的控制或从模型本身上考虑。对外开放的原则是,尽量降低系统耦合度,否则内部一旦变更外部所有的接口都要跟随发生变更;另外,系统内部的一些数据或方法并不希望外部能看到或调用。类似的考虑很多,只是举个例子。系统设计的原则是高内聚低耦合,尽量依赖抽象而不依赖于具体。这里感觉automapper就

ChaITSimpleLove的博客 993

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ASP.NET Core 3.x 学习笔记(1)——从项目结构了解依赖注入、管道、路由

ASP.NET Core 3.x 学习笔记(一)——从项目结构了解依赖注入、管道、路由ASP.NET Core 3.0 学习笔记项目结构Program.csStartup.cs在 ASP.NET Core MVC 中简单实现项目启动环境变量静态文件包管理静态文件合并依赖注入 DI(Dependency Injection)DI 的优点ASP.NET Core 管道(pipeline)配置中间件路由ASP.NET Core 应用的多样性端点 endpoint ASP.NET Core 3.0 学习笔记 项目结

SQWH_SSGS的博客 789

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

使用ASP.NET Core 3.x 构建 RESTful API - 1. 开始

以前写过ASP.NET Core 2.x的REST API文章,今年再更新一下到3.0版本。预备知识:ASP.NET Core 和C#工具:Visual Studio...

dotNET跨平台 2912

ASP.NET Core 3.x 学习笔记(6)——SignalR

ASP.NET Core 3.x 学习笔记(6)——SignalRASP.NET Core 3.x 学习笔记(6)——SignalR什么是实时 webSignalR “底层”技术Polling(轮询)Long PollingServer Sent Events(SSE)Web SocketWeb Socket 的生命周期HTTP 握手消息类型SignalR 概念学习SiganlR 回落机制RPCHub横向负载使用 SignalR具体通信逻辑,后续加强学习后分析 本系列学习笔记均来源于B站UP主”软件工艺师“

SQWH_SSGS的博客 685

[.NET学习笔记] - 在ASP.NET Core MVC中使用Blazor组件

场景 .NET5发布了,突然对Blazor有了点兴趣,想尝尝鲜。 Blazor有两种模式,server-side与client-side(WASM)。这里打算在已有的MVC项目中使用Blazor组件,所以用的server-side。 use blazor component in ASP.NET Core 3.1 MVC。 解决方案 step1 startup.cs配置。 // ConfigureServices services.AddServerSideBlazor(); services.AddAnt

kyw的专栏 2169

ASP.Net Core 3.1 中使用JWT认证

JWT认证简单介绍关于Jwt的介绍网上很多,此处不在赘述,我们主要看看jwt的结构。 JWT主要由三部分组成,如下:HEADER.PAYLOAD.SIGNATURE...

dotNET跨平台 3860

以正确的方式下载和配置 ASP.NET Core 官方源码

我们可以在Github上面直接查看ASP.NETCore 3.x的源代码,但是我们也可以把源代码下载下来进行查看。而下载源代码进行查看有很多好处:任意...

dotNET跨平台 1879

.net core 3.x 使用NLog输出日志到文件

.net core 升级到3.x,变化还是比较多,之前配置的NLog也出了问题,需要重新配置。 安装 直接在NuGet中搜索NLog.Web.AspNetCore,安装4.9+版本。 创建配置文件 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NL...

一只小鹰 2780

模型绑定ASP.NET Core中的JSON POST(你的.net core 为什么无法接收JSON参数)

有一天,当我出现一个关于模型绑定的问题时,我正在追赶最新的ASP.NET社区Standup,这个问题我之前没有接过(你可以在46:30左右看到这个问题)。它指出在ASP.NET Core(ASP.NET 5的新名称)中,您不能再简单地将JSON数据发布到MVC控制器并自动绑定它,您以前可以在ASP.NET 4 / MVC中执行此操作5。 在这篇文章中,我将展示如果您将项目转换为ASP.NET ...

秋枫苦雪 blog 1万+
上一篇: ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习
下一篇: ASP.NET Core 3.x 学习笔记(4)——View Component
SQWH_SSGS
博客等级 码龄9年 61粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值