ASP.NET Core 6 基础入门系列(10)项目结构详解之appsettings.json

 

  基于.NET Framework 创建的Web项目中的配置信息存储在web.config文件中,创建的WinForm、控制台等应用程序项目中的配置信息存储在app.config文件中

ASP.NET Core Web 项目中已经不存在XML格式的 web.config 或者app.config 文件,取而代之的是JSON格式的 appsettings.json 应用配置文件。上图中 DotNet6_Web_Study 项目中默认提供了 appsettings.json 与 appsettings.Development.json 两个配置文件。

  做过 ASP.NET Web 项目开发的小伙伴经常遇到以下场景:在 web.config 中配置数据库连接字符串,但是本地开发环境与正式部署运行环境的数据库名称、账号等信息不同。开发者一般的做法是再复制一条配置信息并修改,两条配置信息分别对应本地开发环境与服务器部署环境的数据库连接信息。当在本地开发时,将正式部署环境的数据库连接字符串信息注释掉,启用本地开发环境的数据库连接字符串。当部署到服务器正式环境运行时,将本地开发环境的数据库连接字符串注释掉,启用服务器正式环境的数据库连接字符串。如下代码:

<connectionStrings>
    <!--本地开发-->
    <add name="DXConnectionString" connectionString="Data Source=localhost;Initial Catalog=DotNet6_Web_Study_TEST_DB;User ID=sa;Password=654321" providerName="System.Data.SqlClient" />
    
    <!--正式部署环境-->
    <!-- <add name="DXConnectionString" connectionString="Data Source=192.168.1.222;Initial Catalog=DotNet6_Web_Study_DB;User ID=sa;Password=starsmorning!@#$%^" providerName="System.Data.SqlClient" /> -->
</connectionStrings>

上面描述的是开发过程中最常见的配置信息之一,当项目的业务需求比较庞大或复杂时,需要配置更多的信息。如此频繁的注释与取消注释来切换配置项以适应不同的环境是非常繁琐且容易出错的。

  ASP.NET Core Web 项目中针对上述问题就给出了非常优雅的解决方案,提供了两种以上的配置文件,每个配置文件对应一种运行环境。DotNet6_Web_Study 项目中的 appsettings.json 文件中的配置内容只有几行代码,非常简洁,且只有 log(日志) 的相关配置。

在企业级应用开发中,配置信息会包含更多的信息,举个例子,在某个项目中添加 DatabaseConfig 与 BIMFaceConfig 两个配置项

  • 生产环境配置信息

  •  开发环境配置信息

然后通过一个环境变量来区分加载不同的配置文件,在 launchSettings.json 文件中配置了 environmentVariables.ASPNETCORE_ENVIRONMENT 环境变量,默认取值范围为 Development、Stage、Product。也可以自定义环境变量值

最后当项目运行时,如果环境变量为 Development,则加载 appsettings.Development.json 配置文件及内容,如果是 Product,则加载 appsettings.json 配置文件及内容。

配置完成后,如何读取配置项的内容,本节不做介绍,后续博客中会有专门的介绍。

关于环境变量的详细内容,后续的博客中会有更加详细的介绍,或者参考微软官方博客《在 ASP.NET Core 中使用多个环境》https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-6.0

posted @   张传宁  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
页脚 HTML 代码
点击右上角即可分享
微信分享提示