在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
环境: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 引用了一个特定的环境变量 二、Appsettings.json
三、自定义配置json有时候一个复杂的项目配置信息比较多,Appsettings.json会很复杂,所以一般都会把一些单独分离出来,比如将数据库连接配置分离出来。
之前有同事问,我们添加了一个自定义的json文件,应用是如何也晓得的呢?IHostBuilder提供了一个扩展方法ConfigureAppConfiguration,它的作用就是将我们自定义的json文件注入到项目中,能够被应用所识别。ConfigureAppConfiguration方法可累加,也就是说你可以利用ConfigureAppConfiguration方法加入多个json文件。如: public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseKestrel(); webBuilder.UseStartup<Startup>(); }) //指定自定义的配置json .ConfigureAppConfiguration((h, c) => { c.AddJsonFile($"appsettings_ratelimit.json", true, true); }); 使用的时候和使用appsettings.json一样,不用指定json的文件名称。为什么呢?看下AddJsonFile方法的源码如下: // Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; namespace Microsoft.Extensions.Configuration { /// <summary> /// Used to build key/value based configuration settings for use in an application. /// </summary> public class ConfigurationBuilder : IConfigurationBuilder { /// <summary> /// Returns the sources used to obtain configuration values. /// </summary> public IList<IConfigurationSource> Sources { get; } = new List<IConfigurationSource>(); /// <summary> /// Gets a key/value collection that can be used to share data between the <see cref="IConfigurationBuilder"/> /// and the registered <see cref="IConfigurationProvider"/>s. /// </summary> public IDictionary<string, object> Properties { get; } = new Dictionary<string, object>(); /// <summary> /// Adds a new configuration source. /// </summary> /// <param name="source">The configuration source to add.</param> /// <returns>The same <see cref="IConfigurationBuilder"/>.</returns> public IConfigurationBuilder Add(IConfigurationSource source) { if (source == null) { throw new ArgumentNullException(nameof(source)); } Sources.Add(source); return this; } /// <summary> /// Builds an <see cref="IConfiguration"/> with keys and values from the set of providers registered in /// <see cref="Sources"/>. /// </summary> /// <returns>An <see cref="IConfigurationRoot"/> with keys and values from the registered providers.</returns> public IConfigurationRoot Build() { var providers = new List<IConfigurationProvider>(); foreach (var source in Sources) { var provider = source.Build(this); providers.Add(provider); } return new ConfigurationRoot(providers); } } } 四、设置环境1、方案一ASP.NET Core控制环境切换最核心的东西是“ASPNETCORE_ENVIRONMENT”环境变量,它直接控制当前应用程序运行的环境类型。您可以通过在项目上右键菜单选择“属性”选项,然后切换到“调试”标签来修改此环境变量。如下图:
此环境变量框架默认提供了三个值,当然也可以定义其它的值:
2、方案二也可以通过ASP.Net Core包含的launchSettings.json的文件设置环境,可以在项目中“Properties”文件夹中找到该文件。
五、读取appsettings.json有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions 。 1、先看丑陋的方法比如在项目中需要读取 appsettings.Development.json中的数据库连接字符串,上边已经介绍了如何根据环境切换配置,如果想读取appsettings.Production.json的配置,就按照上边的两种方式切换即可。
2、优雅的方法比如在项目中需要读取 appsettings.Development.json中的数据库连接字符串,上边已经介绍了如何根据环境切换配置,如果想读取appsettings.Production.json的配置,就按照上边的两种方式切换即可。
六、读取自定义配置Json1、第一种方法:IConfiguration方式
2、第二种方式 IOPtions
|
请发表评论