返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >为什么ASP.NETCore数据库连接串的值和appsettings.json配的不一样?
  • 382
分享到

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

2024-04-02 19:04:59 382人浏览 泡泡鱼
摘要

目录一、配置读取顺序二、分析三、演示1.读取Providers2.读取配置值一、配置读取顺序 ASP.net core 中的配置是使用一个或多个配置提供程序执行的,配置提供程序使用各

一、配置读取顺序

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

到此这篇关于为什么数据库连接串的值和appsettings.json配的不一样?的文章就介绍到这了,更多相关数据库连接串的值和appsettings.json配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

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

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

猜你喜欢
  • 为什么ASP.NETCore数据库连接串的值和appsettings.json配的不一样?
    目录一、配置读取顺序二、分析三、演示1.读取Providers2.读取配置值一、配置读取顺序 ASP.NET Core 中的配置是使用一个或多个配置提供程序执行的,配置提供程序使用各...
    99+
    2024-04-02
  • ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样
    这篇“ASP.NET Core数据库连接串的值为什么和appsettings.json配的不一样”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收...
    99+
    2023-06-29
  • navicat为什么连接不上数据库
    navicat无法连接数据库的常见原因有:数据库服务器未运行防火墙或网络问题用户名或密码错误数据库连接参数不正确navicat版本问题数据库服务器繁忙驱动程序问题数据库服务器配置错误 ...
    99+
    2024-04-06
    navicat 网络问题
  • 数据库连接配置的策略和实践是怎样的
    今天就跟大家聊聊有关数据库连接配置的策略和实践是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 前言应用执行SQL请求完成的过程中,数据库连...
    99+
    2024-04-02
  • C#连接Excel2003和Excel2007以上版本怎样做数据库的连接字符串
    本篇文章为大家展示了C#连接Excel2003和Excel2007以上版本怎样做数据库的连接字符串,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下: ...
    99+
    2024-04-02
  • EF 配置Oracle数据库数据库连接字符串的实例
    使用Nuget管理程序包自动安装了Oracle的两个程序包后,配置文件就已经准备好了,但一直很奇怪,一直连接不上数据库, 使用过Oracle的都知道,Oracle的配置一般都需要 net manager,然...
    99+
    2024-04-02
  • ASP.NET数据库连接字符串的分析是怎样的
    这期内容当中小编将会给大家带来有关ASP.NET数据库连接字符串的分析是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、使用OleDbConnection对象连接OLE DB数据源1.连接Acce...
    99+
    2023-06-17
  • 为什么我的 PHP 数据库连接失败?
    php 数据库连接失败的原因有:数据库服务器未运行、主机名或端口不正确、数据库凭据不正确、缺少适当的权限。解决方法包括:启动服务器、检查主机名和端口、核对凭据、修改权限和调整防火墙设置。...
    99+
    2024-05-21
    php 数据库连接 mysql
  • 为什么我的 PHP 数据库连接失败?
    php 数据库连接失败的原因有:数据库服务器未运行、主机名或端口不正确、数据库凭据不正确、缺少适当的权限。解决方法包括:启动服务器、检查主机名和端口、核对凭据、修改权限和调整防火墙设置。...
    99+
    2024-05-21
    php 数据库连接 mysql
  • 数据库长连接和短连接的区别是什么
    数据库长连接和短连接的区别主要体现在以下几个方面:1. 连接的建立和关闭频率:长连接指的是在一段时间内保持连接的状态,不主动关闭连接...
    99+
    2023-08-16
    数据库
  • plsql配置数据库连接的方法是什么
    在PL/SQL中配置数据库连接的方法是使用一个叫做数据库链接(Database Link)的对象。数据库链接是一个在一个数据库中指向...
    99+
    2023-09-18
    plsql 数据库
  • 数据库连接池dbcp的原理及配置是怎样的
    这篇文章将为大家详细讲解有关数据库连接池dbcp的原理及配置是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 简介DBCP(DataBa...
    99+
    2024-04-02
  • 配置文件加密了数据库配置信息为什么Spring Boot仍能连接数据库
    这篇“配置文件加密了数据库配置信息为什么Spring Boot仍能连接数据库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“配...
    99+
    2023-06-27
  • mysql是一个什么样的数据库
    小编给大家分享一下mysql是一个什么样的数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! my...
    99+
    2024-04-02
  • 云服务器和云数据库规格一样吗为什么
    云服务器和云数据库是两种常见的云计算服务,它们的规格可能有所不同。 云服务器通常指的是虚拟机,它们可以为用户提供高可用性和高性能计算能力。这些虚拟机可以托管在云主机或云数据中心中,并且可以根据用户的需求进行分层和配置。 云数据库(例如My...
    99+
    2023-10-26
    规格 服务器 数据库
  • 数据库连接池的艺术:让数据库访问成为一件享受!
    数据库连接池是一种重要的技术,可以显著提升应用程序与数据库之间的交互效率。通过使用连接池,应用程序可以重用先前建立的数据库连接,从而避免重复创建和销毁连接的开销。 连接池如何工作? 连接池是一个由预先配置的数据库连接组成的集合。当应用程...
    99+
    2024-03-03
    数据库连接池、连接池管理、数据库优化、应用程序性能
  • python数据库连接池中数据库连接池技术的优点是什么
    本篇文章给大家分享的是有关python数据库连接池中数据库连接池技术的优点是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。昨天测试了一下开500个线程去请求数据库,不过这个...
    99+
    2023-06-17
  • 如何连接一个像 MSSQL 或者 orcale 一样的外部数据库
    我们以 MySQL 为例来思考这个问题:第一步 - 把 mysql 连接器的依赖项添加至 pom.xml<dependency>    <groupId>mysql</g...
    99+
    2023-06-05
  • mongodb数据库连接的步骤是什么
    连接到MongoDB数据库的步骤如下:1. 安装MongoDB:从MongoDB官方网站下载并安装MongoDB的最新版本。2. 启...
    99+
    2023-08-31
    mongodb数据库
  • navicat连接数据库的步骤是什么
    连接数据库的步骤如下:1. 打开Navicat软件。2. 点击“连接”按钮,或者选择“文件”菜单中的“新建连接”选项。3. 在弹出的...
    99+
    2023-09-14
    navicat 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作