返回顶部
首页 > 资讯 > 精选 >ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样
  • 921
分享到

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

2023-06-29 06:06:04 921人浏览 泡泡鱼
摘要

这篇“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");                }            });    });        ......}

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

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

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配置,返回结果正确。

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

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

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

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

--结束END--

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

本文链接: https://lsjlt.com/news/322992.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作