环境:ASP.NET Core3.1
ASP.NET Core是一个全新的Web开发平台,微软在它上面构建了MVC、SingalR、GRPC、Orleans这样广泛使用的Web框架,我们先以MVC框架为例介绍利用ASP.NET Core构建项目的常见名词。这篇文章介绍appsettings.json
ASP.NET Core MVC项目文件夹解读
在开发项目的过程当中,生产环境与调试环境的配置是不一样的,比如连接字符串。 ASP .NET Core 支持利用环境变量来动态配置 JSON 文件。ASP.NET Core 引用了一个特定的环境变量 ASPNETCORE_ENVIRONMENT
来描述应用程序当前运行的环境。这个变量可以被设置为任何你喜欢的值,但是有三个值被约定使用: Development
,Staging
和 Production。
一、Appsettings.json
首先在 ASP .NET Core 项目当中添加一个appsettings.json(默认都有该文件)文件,内容如下图:
再继续添加 appsettings.Development.json和appsettings.Production.json两个配置文件。解决方案管理器如下图:
我们可以在appsettings.Development.json和appsettings.Production.json分别设置相应的配置信息,比如数据库连接
二、自定义配置json
有时候一个复杂的项目配置信息比较多,Appsettings.json会很复杂,所以一般都会把一些单独分离出来,比如将数据库连接配置分离出来。
首先在 ASP .NET Core 项目当中添加一个connectionStrings.json文件,内容如下:
再继续添加 connectionStrings.Development.json和connectionStrings.Production.json两个配置文件。如下图:
三、设置环境
1、方案一
ASP.NET Core控制环境切换最核心的东西是“ASPNETCORE_ENVIRONMENT”环境变量,它直接控制当前应用程序运行的环境类型。您可以通过在项目上右键菜单选择“属性”选项,然后切换到“调试”标签来修改此环境变量。如下图:
此环境变量框架默认提供了三个值,当然也可以定义其它的值:
-
- Development(开发)
- Staging(预演)
- Production(生产)
2、方案二
也可以通过ASP.Net Core包含的launchSettings.json的文件设置环境,可以在项目中“Properties”文件夹中找到该文件。
四、.NET Core类库项目中如何读取appsettings.json中的配置
有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions 。
1、先看丑陋的方法
比如在项目中需要读取 appsettings.Development.json中的数据库连接字符串,上边已经介绍了如何根据环境切换配置,如果想读取appsettings.Production.json的配置,就按照上边的两种方式切换即可。
首先在 Startup 的 ConfigureServices() 方法中进行注入:
然后在HomeController中调用:
展示效果:
2、优雅的方法
比如在项目中需要读取 appsettings.Development.json中的数据库连接字符串,上边已经介绍了如何根据环境切换配置,如果想读取appsettings.Production.json的配置,就按照上边的两种方式切换即可。
首先我们在appsettings.Development.json 都添加一个 ConnectionStrings节点。
然后定义一个存放连接字符串的配置类 ConnectionStrings(类的名称要和节点名称保持一致):
在 Startup 的 ConfigureServices() 中注入进去:
然后在HomeController中调用,给 HomeController的构造函数参数中添加 IOptions<ConnectionStrings> 接口,通过 IOptions<ConnectionStrings> 读取配置:
效果如下:
五、读取自定义配置Json
1、第一种方法:IConfiguration方式
在根目录建一个PersonConfig.json配置文件
首先在Program中, 调用 ConfigureAppConfiguration 以指定应用的配置提供程序:
然后在HomeController中调用:
效果展示:
2、第二种方式 IOPtions
在根目录建一个PersonConfig.json配置文件
首先在Program中, 调用 ConfigureAppConfiguration 以指定应用的配置提供程序:
新建实体:(类的名称要和节点名称一致)
在startup的 ConfigureServices中注入:
然后在HomeController中调用:
展示效果: