当前位置: 首页 > news >正文

.net core IConfiguration 读 appsettings.json 数据,举例

在.NET Core中,IConfiguration 接口是用来读取配置数据的,包括从 appsettings.json 文件中读取。下面是一个如何在使用.NET Core时通过 IConfiguration 读取 appsettings.json 数据的示例。

首先,假设你的 appsettings.json 文件内容如下:

{  "Logging": {  "LogLevel": {  "Default": "Information",  "Microsoft": "Warning",  "Microsoft.Hosting.Lifetime": "Information"  }  },  "MyCustomSettings": {  "ApiKey": "12345",  "BaseUrl": "https://api.example.com"  }  
}

接下来,你需要在你的.NET Core项目中定义一个与 MyCustomSettings 部分相对应的C#类。这样,你就可以使用 IConfiguration 的 Get<T>() 方法来读取这些设置了。

public class MyCustomSettings  
{  public string ApiKey { get; set; }  public string BaseUrl { get; set; }  
}

然后,在你的Startup类或其他需要这些配置的类中,你可以通过构造函数注入 IConfiguration,并使用它来获取 MyCustomSettings 的实例。

这里是一个在Startup类中获取并使用这些配置的示例:

public class Startup  
{  public Startup(IConfiguration configuration)  {  Configuration = configuration;  // 直接从 IConfiguration 读取单个设置(不推荐,因为不是类型安全的)  var apiKeyFromConfig = Configuration["MyCustomSettings:ApiKey"];  // 使用强类型配置(推荐)  var myCustomSettings = Configuration.GetSection("MyCustomSettings").Get<MyCustomSettings>();  // 现在你可以使用 myCustomSettings.ApiKey 和 myCustomSettings.BaseUrl 了  }  public IConfiguration Configuration { get; }  // ... 其他Startup类的方法 ...  
}

然而,如果你打算在Startup类之外的其他服务或控制器中使用这些配置,你可能希望将它们作为配置选项注入到你的依赖注入容器中。这可以通过使用 IOptions<T> 接口来实现,该接口是.NET Core提供的用于读取配置选项的强类型方式。

首先,你需要在 Startup.cs 的 ConfigureServices 方法中配置你的选项:

public void ConfigureServices(IServiceCollection services)  
{  // ... 其他服务配置 ...  // 添加MyCustomSettings到DI容器,以便在其他地方通过IOptions<MyCustomSettings>注入  services.Configure<MyCustomSettings>(Configuration.GetSection("MyCustomSettings"));  // ... 其他服务配置 ...  
}

然后,在你的服务或控制器中,你可以通过构造函数注入 IOptions<MyCustomSettings> 来访问这些配置了:

public class MyService  
{  private readonly MyCustomSettings _settings;  public MyService(IOptions<MyCustomSettings> options)  {  _settings = options.Value;  // 现在你可以使用 _settings.ApiKey 和 _settings.BaseUrl 了  }  // ... 其他服务方法 ...  
}

http://www.lryc.cn/news/402883.html

相关文章:

  • 全球Windows机器蓝屏,作为量化人,我的检讨来了
  • 部署和运维
  • 微信小程序基本语法
  • 测试用例的设计方法
  • Android10.0 锁屏分析-KeyguardPatternView图案锁分析
  • Python 装饰器:函数的函数,代码的艺术
  • 安全防御2
  • C语言 ——— 打印水仙花数
  • 「Conda」在Linux系统中安装Conda环境管理器
  • 9.11和9.9哪个大?GPT-4o也翻车了
  • [开源]语雀+Vercel:打造免费个人博客网站
  • 使用ElementUI和element-china-area-data库实现省市区三级联动组件封装
  • 0718,TCP协议,三次握手,四次挥手
  • 如何安装Visual Studio Code
  • vi 编辑器快捷生成 main 函数和基本框架
  • npm相关指令
  • 为什么不要碰自媒体
  • 酷炫末世意境背景404单页HTML源码
  • PHP 调用 1688 详情 API 接口的实战攻略
  • SAP ABAP性能优化
  • 【鸿蒙学习笔记】构建布局・选项卡 (Tabs)
  • 独立游戏《星尘异变》UE5 C++程序开发日志5——实现物流系统
  • Web开发:<br>标签的作用
  • DVC+Minio
  • C++内存管理(区别C语言)深度对比
  • 手把手带你写一个精简版 HashMap 的 put 方法
  • 【面试题】数据结构:堆排序的排序思想?
  • PyTorch 深度学习实践-循环神经网络基础篇
  • vue实现可拖拽dialog封装
  • 本地多模态看图说话-llava