千家信息网

ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,
千家信息网最后更新 2026年11月03日ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样

这篇"ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样"文章吧。

一、配置读取顺序

ASP.NET Core 中的配置是使用一个或多个配置提供程序执行的,配置提供程序使用各种配置源从键值对读取配置数据。

ASP.NET Core 提供了大量可用的配置提供程序,这还不包括可以自定义配置提供程序。

添加配置提供程序的顺序很重要,因为后面的提供程序添加的配置值将覆盖前面的提供程序添加的值。

配置提供程序的典型顺序为:

  • appsettings.json

  • appsettings.Environment.json

  • 用户机密

  • 环境变量

  • 命令行参数

假如,appsettings.json配置了开发环境的数据库连接串,appsettings.Production.json配置了生产环境的数据库连接串;管理员密码仅配置在用户机密中。

最终生产环境的配置为:

键来源
数据库连接串appsettings.Production.json
管理员密码用户机密

二、分析

从IConfigurationRoot 接口的文档上,可以了解到,IConfigurationRoot是表示 IConfiguration 层次结构的根。

使用IConfigurationRoot.Providers可以得到IEnumerable,猜测应该是顺序排列的。

然后反向遍历Providers,读取配置key对应的值,如果存在那应该就是配置的来源了。

让我们验证一下。

三、演示

1.读取Providers

创建WebApplication1,修改Startup.cs,代码如下:

public Startup(IConfiguration configuration){    Configuration = (IConfigurationRoot)configuration;}public IConfigurationRoot Configuration { get; }public void Configure(IApplicationBuilder app, IWebHostEnvironment env){    ......    app.UseEndpoints(endpoints =>    {            endpoints.MapGet("/test", async context =>            {                foreach(var provider in Configuration.Providers)                {                    await context.Response.WriteAsync(provider.ToString());                    await context.Response.WriteAsync("\r\n");                }            });    });        ......}

从下图看到,顺序应该是正确的:

2.读取配置值

继续修改Startup.cs,代码如下:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){    ......    app.UseEndpoints(endpoints =>    {        endpoints.MapGet("/test2/{key:alpha}", async context =>        {            var key = context.Request.RouteValues["key"].ToString();            foreach (var provider in Configuration.Providers.Reverse())            {                if (provider.TryGet(key, out string value))                {                    await context.Response.WriteAsync(provider.ToString());                    await context.Response.WriteAsync("\r\n");                    await context.Response.WriteAsync(value);                    break;                }            }        });    });        ......}

运行后查找AllowedHosts配置,返回结果正确。

再次查找AllowedHosts配置,返回结果正确。

以上就是关于"ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

配置 程序 数据 数据库 内容 顺序 环境 机密 用户 代码 密码 就是 文章 来源 知识 管理员 篇文章 结果 生产 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 互联网科技的 美国互联网黑科技 互联网高科技企业 互联网科技公司做什么 多迪互联网科技有限公司 互联网科技股午盘股票涨跌 互联网科技公司需要的职位 深圳前海聚择互联网科技有限公司 成都铂石互联网科技做什么的 宁夏科技产业互联网案例 昭通互联网科技选哪家 互联网与医疗科技 玉溪互联网科技怎么选 开一家科技互联网公司需要多少钱 广州梦谷互联网科技有限公司领导 科技互联网行业投资研究 互联网金融运营模式中的金融科技 互联网的黑科技实验室 互联网科技快速发展优美句子 互联网科技公司简介 广州万易互联网科技有限公司 世界互联网领先科技成果 广州互联网络科技有限公司 丰台科技园 互联网 科技伦理 互联网公司 中国最先进互联网科技公司 浙江互联网科技研学营 云南互联网科技学费 悟空问答互联网科技
0