ASP.NET Core与配置系统的集成
目录
配置系统
默认添加的配置提供者
加载命令行中的配置。
运行环境
读取方法
User Secrets
注意事项
Zack.AnyDBConfigProvider
案例
配置系统
默认添加的配置提供者
- 加载现有的IConfiguration。
- 加载项目根目录下的appsettings.json。
- 加载项目根目录下的appsettings.{Environment}.json。
- 当程序运行在开发环境下,程序会加载“用户机密”配置。
- 加载环境变量中的配置。
-
加载命令行中的配置。
运行环境
ASP.NET Core 会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值。推荐值:Development(开发环境)、Staging(测试环境)、Production(生产环境)。
读取方法
app.Environment.EnvironmentName、app.Environment.IsDevelopment()……
[HttpGet]
public string Test()
{return Environment.GetEnvironmentVariable("haha");
}
Program
app.Environment.IsDevelopment()Controller
private readonly IWebHostEnvironment webHostEnvironment;[HttpGet]
public string Test()
{return webHostEnvironment.EnvironmentName;
}
User Secrets
- 把不方便放到appsettings.json中的机密信息放到一个不在项目中的json文件中。
- 在ASP.NET Core项目上单击鼠标右键,选择【管理用户机密】。
- C:\Users\用户名\AppData\Roaming\Microsoft\UserSecrets\473b31c4-af83-4603-8d28-438df885bdef
注意事项
- 供开发人员使用的,不适合在生产环境中使用。
- 仍然是明文存储。不想别人看到怎么办?Azure Key Vault、Zack.AnyDBConfigProvider等。无法完全避免。加强安全防控更重要。
- 如果因为重装、新员工等原因导致secrets.json重建,就要重新配置,麻烦。如果影响大的话,还是用集中式配置服务器。
Zack.AnyDBConfigProvider
https://github.com/yangzhongke/Zack.AnyDBConfigProviderhttps://github.com/yangzhongke/Zack.AnyDBConfigProviderhttps://github.com/yangzhongke/Zack.AnyDBConfigProvider
https://github.com/yangzhongke/Zack.AnyDBConfigProvider
案例
- 系统的主要配置(Redis、Smtp)放到配置专用的数据库中。Zack.AnyDBConfigProvider
- 连接配置数据库的连接字符串配置在“用户机密”中。"Data Source=.;Initial Catalog=demo1;Integrated Security=SSPI;"
- 把Smtp的配置显示到界面上。
- 程序启动的时候就连接Redis,并且把Redis连接对象注册到依赖注入系统中。
secrets.json:
{"connStr": "Data Source=.;Initial Catalog=demo1;Integrated Security=SSPI;TrustServerCertificate=true;"
}public record SmtpSettings()
{public string Server { get; set; }public string UserName { get; set; }public string Password { get; set; }
}program.cs:
//从数据库动态加载配置
builder.Host.ConfigureAppConfiguration((hostCtx, configBuilder) =>
{//配置中读取名为"ConnStr"的连接字符串string connStr = builder.Configuration.GetSection("ConnStr").Value;//添加数据库配置源configBuilder.AddDbConfiguration(() => new SqlConnection(connStr), reloadOnChange: true, reloadInterval: TimeSpan.FromSeconds(2));
});
builder.Services.Configure<SmtpSettings>(builder.Configuration.GetSection("Smtp"));
//添加Redis配置源
builder.Services.AddSingleton<IConnectionMultiplexer>(sp =>
{//在Program.cs中读取配置的一种方法string constr = builder.Configuration.GetSection("Redis").Value;return ConnectionMultiplexer.Connect(constr);
});Controller:
private readonly IOptionsSnapshot<SmtpSettings> optSmtp;
private readonly IConnectionMultiplexer connectionMultiplexer;public Test(IOptionsSnapshot<SmtpSettings> optSmtp, IConnectionMultiplexer connectionMultiplexer)
{this.optSmtp = optSmtp;this.connectionMultiplexer = connectionMultiplexer;
}[HttpGet]
public string Demo1()
{var ping = connectionMultiplexer.GetDatabase(0).Ping();return optSmtp.Value.ToString() + ":" + ping;
}
相关文章:
ASP.NET Core与配置系统的集成
目录 配置系统 默认添加的配置提供者 加载命令行中的配置。 运行环境 读取方法 User Secrets 注意事项 Zack.AnyDBConfigProvider 案例 配置系统 默认添加的配置提供者 加载现有的IConfiguration。加载项目根目录下的appsettings.json。加载项目根目录下的appsettin…...
中间件的概念及基本使用
什么是中间件 中间件是ASP.NET Core的核心组件,MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲:Tomcat、WebLogic、Redis、IIS;狭义上来讲,ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…...
SpringBoot 整合 Mybatis:注解版
第一章:注解版 导入配置: <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步骤: 配置数据源见 Druid…...
18.[前端开发]Day18-王者荣耀项目实战(一)
01-06 项目实战 1 代码规范 2 CSS编写顺序 3 组件化开发思想 组件化开发思路 项目整体思路 – 各个击破 07_(掌握)王者荣耀-top-整体布局完成 完整代码 01_page_top1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…...
Kafka 使用说明(kafka官方文档中文)
文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...
基于多智能体强化学习的医疗AI中RAG系统程序架构优化研究
一、引言 1.1 研究背景与意义 在数智化医疗飞速发展的当下,医疗人工智能(AI)已成为提升医疗服务质量、优化医疗流程以及推动医学研究进步的关键力量。医疗 AI 借助机器学习、深度学习等先进技术,能够处理和分析海量的医疗数据,从而辅助医生进行疾病诊断、制定治疗方案以…...
Airflow:深入理解Apache Airflow Task
Apache Airflow是一个开源工作流管理平台,支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持,它已迅速成为编排复杂数据管道的首选工具。在这篇博文中,我们将深入研究Apache Airflow 中的任务概念,探…...
multisim入门学习设计电路
文章目录 1.软件的安装2.电路基本设计2.1二极管的简介2.2最终的设计效果2.3设计流程介绍 3.如何测试电路 1.软件的安装 我是参考的下面的这个文章,文章的链接放在下面,亲测是有效的,如果是小白的话,可以参考一下: 【…...
【算法精练】二分查找算法总结
目录 前言 1. 二分查找(基础版) 2. 寻找左右端点 循环判断条件 求中间点 总结 前言 说起二分查找,也是一种十分常见的算法,最常听说的就是:二分查找只能在数组有序的场景下使用;其实也未必,…...
从零开始实现一个双向循环链表:C语言实战
文章目录 1链表的再次介绍2为什么选择双向循环链表?3代码实现:从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…...
MYSQL面试题总结(题目来源JavaGuide)
MYSQL基础架构 问题1:一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析:当用户提交一个 SQL 语句时,MySQL 首先会对语句进行解析。这个过程会检查语法是否正确,确保 SQL 语句符合 MySQL 的语法规则。如果发现…...
visual studio安装
一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本,例如“Visual Studio Community”(免费版本)&#x…...
JVM执行引擎
一、执行引擎的概述: 执行引擎是]ava虚拟机核心的组成部分之一; “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则…...
C# 9.0记录类型:解锁开发效率的魔法密码
一、引言:记录类型的神奇登场 在 C# 的编程世界中,数据结构就像是构建软件大厦的基石,其重要性不言而喻。然而,传统的数据结构定义方式,尤其是在处理简单的数据承载对象时,常常显得繁琐复杂。例如…...
搭建自己的专属AI——使用Ollama+AnythingLLM+Python实现DeepSeek本地部署
前言 最近DeepSeek模型非常火,其通过对大模型的蒸馏得到的小模型可以较轻松地在个人电脑上运行,这也使得我们有机会在本地构建一个专属于自己的AI,进而把AI“调教”为我们希望的样子。本篇文章中我将介绍如何使用OllamaAnythingLLMPython实现…...
『 C++ 』中理解回调类型在 C++ 中的使用方式。
文章目录 案例 1:图形绘制库中的回调使用场景说明代码实现代码解释 案例 2:网络服务器中的连接和消息处理回调场景说明代码实现代码解释 案例 3:定时器中的回调使用场景说明代码实现代码解释 以下将通过不同场景给出几个使用回调类型的具体案…...
git多人协作
目录 一、项目克隆 二、 1、进入克隆仓库设置 2、协作处理 3、冲突处理 4、多人协作分支的推送拉取删除 1、分支推送(2种) 2、远程分支拉取(2种) 3、远程分支删除 一、项目克隆 git clone 画船听雨眠/test1 (自定义的名…...
CTFSHOW-WEB入门-命令执行71-77
题目:web 71 题目:解题思路:分析可知highlight_file() 函数被禁了,先想办法看看根目录:cvar_export(scandir(dirname(‘/’))); 尝试一下发现很惊奇:(全是?)这种情况我也…...
浅谈《图解HTTP》
感悟 滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接…...
LLMs瞬间获得视觉与听觉感知,无需专门训练:Meta的创新——在图像、音频和视频任务上实现最优性能。
引言: 问题: 当前的多模态任务(如图像、视频、音频描述生成、编辑、生成等)通常需要针对特定任务训练专门的模型,而现有的方法在跨模态泛化方面存在局限性,难以适应新任务。此外,多模态嵌入反演…...
2026年AGI突围:自主智能体驱动,数字生命从架构落地到自我迭代全解析
2026年,AI行业正式告别“生成式狂欢”,迈入“自主智能体(AI Agent)规模化落地元年”。Gartner将自主智能体列为年度十大战略技术趋势之首,各大科技厂商纷纷布局,从实验室概念到产业应用,自主智能…...
WechatDecrypt技术实现:如何通过开源工具实现微信数据本地解密与隐私保护
WechatDecrypt技术实现:如何通过开源工具实现微信数据本地解密与隐私保护 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 在数字化时代,数据隐私保护已成为技术开发者和普通用户共…...
模拟仿真技术在现代集成电路设计中的挑战与解决方案
1. 模拟仿真技术面临的现代挑战在当今集成电路设计领域,模拟仿真技术正面临前所未有的挑战。随着工艺节点从130nm一路演进到15nm甚至更小尺寸,设计复杂度呈指数级增长。我曾参与过多个采用28nm工艺的混合信号芯片项目,深刻体会到传统SPICE仿真…...
基于RAG的本地知识库聊天机器人:anything-llm部署与实战指南
1. 项目概述:一个能“消化”任何文件的本地知识库聊天机器人最近在折腾本地大模型应用的朋友,可能都绕不开一个痛点:如何让大模型“读懂”并“记住”我自己的文档?无论是PDF报告、Word文档、网页文章,还是代码片段&…...
Navicat导入Excel实战:从数据准备到成功入库的完整避坑指南
1. 数据准备:Excel规范整理实战 第一次用Navicat导入Excel时,我对着报错提示整整折腾了两小时。后来才发现,90%的问题都出在数据准备阶段。就像做饭前要洗菜切配,数据导入前也需要做好这些准备工作: 字段命名要像给变量…...
微信视频下载器wx_channels_download
微信视频下载器ltaoo/wx_channels_download(跨平台轻量首选) 特点:体积小、使用简单,在微信PC端视频下方添加“下载”按钮;支持 macOS 和 Windows。优点:集成式(无需单独监听)&…...
第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题
第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题 一、问题场景:Agent 修改了核心文件,但没有找到该找谁审 在团队项目中,不同模块通常有不同负责人: auth 模块:安全团队 payment 模块:支付团队 database 模块:平台团…...
Agentfiles:统一管理AI编码助手技能文件的Obsidian插件
1. 项目概述:一个为AI编码助手打造的“技能管理中心” 如果你和我一样,同时在使用Claude Code、Cursor、Windsurf这些新一代的AI编码助手,那你一定也面临过同样的困扰:每个工具都有自己的一套“技能”(Skills…...
Blender 3MF插件终极指南:3D打印工作流的完整解决方案
Blender 3MF插件终极指南:3D打印工作流的完整解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否正在寻找一个简单高效的3D打印文件处理方案&…...
别再为EVE-ng镜像发愁了!手把手教你从官网下载到VMware部署(附国内加速地址)
EVE-ng网络模拟器全流程实战:从镜像获取到高阶配置 第一次接触网络设备模拟的工程师,往往会在EVE-ng的入门阶段遇到各种"拦路虎"——镜像文件找不到可靠的下载源、导入VMware时配置出错、虚拟网络连接异常。这些问题如果得不到解决,…...
