首页 > 其他分享 >【.NET Core】配置复用、替换(GSoft.Extensions.Configuration.Substitution)【转】

【.NET Core】配置复用、替换(GSoft.Extensions.Configuration.Substitution)【转】

时间:2023-06-20 17:48:12浏览次数:39  
标签:Core GSoft 配置 MyService Extensions Substitution Configuration

.NET 是一个非常强大的框架,它允许开发人员管理来自各种源(如 JSON 文件、环境变量等)的应用程序设置。但是,有时开发人员需要一种方法来引用和替换其他设置中的配置值,以避免在多个地方维护相同的值,从而使配置文件变得混乱和难以维护。

为了解决这个问题,我们可以使用 GSoft.Extensions.Configuration.Substitution 库。该库是 Microsoft.Extensions.Configuration 生态系统的强大补充,它允许开发人员在配置文件中引用其他配置值,从而简化了配置管理并提高了可维护性。

Demo

示例配置如下:

//appsettings.json
{
  "MyService": {    
    "ServiceA": "https://localhost:1234/abc"
    "ServiceB": "https://localhost:1234/xyz"
  }
}

在这种情况下,如果 ServiceA 和 ServiceB 都引用相同的基本 URL,那么我们可以使用以下格式引用 ServiceA 和 ServiceB 的基本 URL:

//appsettings.json
{
  "MyService": {    
    "ServiceA": "${MyService:BaseUrl}/abc"
    "ServiceB": "${MyService:BaseUrl}/xyz"
  }
}

//appsettings.Development.json
{
  "MyService": {
    "BaseUrl": "https://localhost:1234"
  }
}

然后,我们需要将 GSoft.Extensions.Configuration.Substitution 库添加到我们的项目中。

dotnet add package GSoft.Extensions.Configuration.Substitution

最后,将替换提供程序添加到应用程序的配置中:

var builder = WebApplication.CreateBuilder(args);
 
builder.Configuration.AddJsonFile("appsettings.json");
builder.Configuration.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json");
builder.Configuration.AddSubstitution(); // 加载全部配置后再加入替换提供程序

现在,你可以在配置文件中使用值替换,并享受更简洁、更易于维护的设置。

Console.WriteLine(builder.Configuration["MyService:ServiceA"]);

 

也不用担心配置错误,因为 GSoft.Extensions.Configuration.Substitution 库会在配置文件中找不到值时抛出异常:

图片

在使用该库时,我们需要注意以下几点:

  • 替换提供程序应该在加载全部配置之后再加入,以确保所有配置都已经加载完成。

  • 在配置文件中使用值引用其他配置值时,应该使用以下格式:

${path:to:other:configuration:value}  
  • 该库允许跨多个配置提供程序进行值替换,从而使配置管理更加灵活和可维护。

总结

通过允许跨多个配置提供程序进行值替换,GSoft.Extensions.Configuration.Substitution 库简化了配置管理并提高了可维护性。试一试,让此库简化你的 .NET 配置体验!

标签:Core,GSoft,配置,MyService,Extensions,Substitution,Configuration
From: https://www.cnblogs.com/fanfan-90/p/17494278.html

相关文章

  • 如何快速发现 ASP.NET Core 应用程序中的服务生命周期问题?【转】
    在ASP.NETCore中,内置了非常强大的依赖注入容器功能。但是,如果不正确使用,也可能会引起一些问题。问题下面我们通过一段示例代码来说明这个问题。public interface IServiceA{    string Get();}public interface IServiceB{    string Get();}public class S......
  • Armsom推出工规级RK3588J-Core(armsom P1 Core) 8K 智能NVR核心板**
    ArmsomP1Core板载RockchipRK3588J新一代工业级八核64位处理器;采用工业级芯片、精密元器件和BTB连接器,支持宽温温度-40°C~85°C长时间稳定运行;支持ARMPC、边缘计算、云服务器、智能NVR等相关领域;提供10年+超长供货期和完善的技术资料,用户可自主深度化定制。八核工业级处理器RK......
  • 【HMS Core】Health Kit健康数据采样, 原子采样数据问题
    【问题描述】1.体脂数据中的肌肉量和水份量是如何获得的,都有些什么?体脂数据中的体重,体脂是用户自己上传的,然后通过计算公式得到数据吗2.日常活动统计数据包含什么内容,怎么获取这些数据?3.锻炼记录概要数据包含什么内容?是统计数据吗?获取方式呢?4.心脏健康数据测的是心电图相关记录。......
  • ASP.NET Core Identity 系列之三
    在这节中我们将研究ASP.NETCoreIdentity中用户名、邮件、密码策略,解释一下Identity默认提供的策略以及如何实现自定义策略,最后我们针对用户名、邮件、密码实现客户自定义策略1.ASP.NETCoreIdentity密码策略ASP.NETCoreIdentity默认的密码策略要求密码满足如下条件:密码......
  • 终端运行roscore时,报错:Unable to contact my own server at...
    问题现象:问题原因:以上问题是由于ROS环境变量ROS_MASTER_URI设置错误导致的,重新设置该变量即可。解决方法:打开~/.bashrc文件,添加或修改环境变量ROS_HOSTNAME和ROS_MASTER,即改为:exportROS_HOSTNAME=localhostexportROS_MASTER_URI=http://localhost:11311修改并保存~/.......
  • ASP.NET Core Identity 系列之二
    转自:https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247486148&idx=1&sn=dae55b414e123c6718e470c21c8c8c21桂迹,微信公众号这节我们主要演示在ASP.NETCoreIdentity中创建、修改、删除、查询用户1.ASP.NETCoreIdentityUserManager类UserManager类位于Microsof......
  • ASP.NET Core MVC 从入门到精通之日志管理
    随着技术的发展,ASP.NETCoreMVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NETCoreMVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NETCoreMVC系统开发的人员。经过前几篇文章的讲解,初步了解ASP.NETCore......
  • ASP.NET Core Identity 系列之一
    转自:https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247486141&idx=1&sn=f77635080994c6295cb801e846427a15桂迹,微信公众号https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247486318&idx=1&sn=1f06f6de690ba6df16ed812de9588709ASP.N......
  • .Net Core Mvc 2. VS2022 + Core6.0 + Mvc 添加视图,传递数据
    添加视图找到控制器HelloWorldController的叫Index的Action在上面右键,选择添加视图,选择空,确认后会在Views文件夹下新建一个HelloWorld文件夹,并生成Index.cshtml文件。直接运行 可以看到Index视图有默认的头部内容和底部内容(太长了没截取),这个效果是在Views\Shared文件夹下的_......
  • 在.Net Core6中使用log4net组件写日志到本地文件的操作流程
    原文链接:https://blog.csdn.net/kevin860/article/details/1068810621.引用包: Log4Net  Microsoft.Extensions.Logging.Log4Net.AspNetCore Microsoft.Extensions.Logging //loggingbuilder.AddFilter该方法需要引入Microsoft.Extensions.Logging名称空间 ......