如何在 .NET Core 中使用 IOptions 读取appsettings.json值

2d0733f7cf10b97e08b14549441c8dd4.jpeg有多种方法可以从 .NET Core 项目中的 appsettings.json 文件中读取配置设置。在本文中,我将告诉你如何在 .NET Core 项目中使用 IOptions 读取appsettings.json文件内容。

在 C# 和 .NET Core 领域,配置管理对于确保应用程序灵活且易于配置至关重要。

在 .NET Core 项目中,配置设置通常存储在appsettings.json文件中。

在读取 appsettings.json 文件中的配置设置时,IOptions 作为选项之一发挥作用。

IOptions 是一种机制,允许您对应用程序的配置数据进行类型保护和检索。

什么是 IOptions?

IOptions<T> 接口允许在 .NET Core 中以强类型方式使用配置数据。表示将在其中存储配置数据的特殊类。此类通常用于对文件appsettings.json中的数据进行建模。

IOptions 用于以下方案:

访问配置数据: 当您需要在整个应用程序的不同位置使用它们时,它用于检索和使用存储在具有强大类型的配置文件中的设置。

确保类型安全: 将配置设置绑定到特定类,在使用设置时启用编译时错误检查。这样可以防止拼写错误和类型不兼容。

集中管理: 它允许从一个中心点管理应用程序的不同组件之间的通用设置。这可确保在进行配置更改时,它们会在整个应用程序中自动更新。

IOptions的使用通常分三个步骤进行。

让我通过我为理解这个主题而准备的样本项目来解释我们将做什么。我将在本文的其余部分分享链接以访问该项目的源代码。

因此,让我们继续这个项目。

在下面,您将找到项目的文件夹结构。

4309a38ca18a61a4c067ee5c51b01e39.png

示例项目的文件夹结构

我提到过有不同的方法可以读取appsettings.json文件。除了 IOptions,还可以使用使用依赖注入或模型类的访问方法。

默认情况下,.NET Core 在项目创建阶段已创建项目中的 appsettings.json 文件。您还可以在下面查看文件的内容。由于这是一个学习项目,所以我在数据库和连接字符串等领域编写了测试文本。当然,在实际项目中,这些区域需要适当更新。

{  
  "Logging": {  
    "LogLevel": {  
      "Default": "Information",  
      "Microsoft.AspNetCore": "Warning"  
    }  
  },  
  "ApplicationSettings": {  
    "DbConnString": "Using options connection string",  
    "SubSettings": {  
      "Name": "Read appsettings.json using options",  
      "ApiVersion": 3  
    }  
  }  
}

IOptions 使用情况

它的使用通常分三个步骤进行:

第 1 步 — 配置类定义:

首先,定义一个类来保存配置数据。此类必须与appsettings.json文件中的结构匹配。

我还在项目中创建了一个配置类,如下所示:

public class AppsettingsOptionsModel  
 {  
     public string DbConnString { get; set; }  
     public AppsettingsSubsettingsModel? SubSettings { get; set; }  
 }  
  
 public class AppsettingsSubsettingsModel  
 {  
     public string Name { get; set; }  
     public string ApiVersion { get; set; }  
 }

第 2 步 — 将配置添加到服务:

在Program.cs文件中,将添加配置服务并将其链接到配置文件。

builder.Services.Configure<AppsettingsOptionsModel>(builder.Configuration.GetSection("ApplicationSettings"));

第 3 步 — 使用配置:

可以访问 IOptions 配置设置,并在需要时读取数据。

最常见的方法是使用依赖注入来访问 IOptions 接口。

public class ReadAppsettingsUsingOptionsController : ControllerBase
 {
     private readonly AppsettingsOptionsModel _appSettingsModel;
     public ReadAppsettingsUsingOptionsController(IOptions<AppsettingsOptionsModel> options)
     {
         _appSettingsModel = options.Value;
     }

     [HttpGet("ReadConnString")]
     public IActionResult GetConnectionString()
     {
         return Ok(_appSettingsModel.DbConnString);
     }

     [HttpGet("ReadAppName")]
     public IActionResult GetAppName()
     {
         return Ok(_appSettingsModel.SubSettings.Name);
     }

     [HttpGet("ReadGroupDate")]
     public IActionResult GetGroupData()
     {
         return Ok(_appSettingsModel);
     }
 }

现在,让我们运行示例项目并检查结果。

当我们运行项目时,Swagger 界面欢迎我们。

34becc2c39bf8a885903e9c6aa7fddc4.png

每次触发 endPoint 时,我都会在下面按顺序共享返回的结果。

24c05411cec322c4ff9ee04cdd2232c6.png

从 appsettings.json 文件中读取连接字符串值的方法的结果

766bb0108eafecf6b6673d5b42c50536.png

该方法从appsettings.json文件中读取子节点值的结果

1650f61d908f73a32d39aaf40ba7e527.png

从appsettings.json文件中读取组值的方法的结果

使用 IOptions 读取 appsettings.json 文件具有显著的优势,例如类型安全性、集中管理和灵活性。但是,它也有一些缺点,例如初始成本、过载的配置类以及需要动态更新。因此,对于开发人员来说,根据项目的需求评估 IOptions 的使用情况非常重要。

在大型和复杂的项目中,IOptions 通常是一个很大的好处,而在小型项目中,更简单的配置方法可能就足够了。

如果你喜欢我的文章,请给我一个赞!谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值