.NET Core类库项目中读取appsettings.json配置的方法

 更新时间:2022年03月22日 10:20:04   作者:dudu  
ASP.NET Core是一个全新的Web开发平台,微软在它上面构建了MVC、SingalR、GRPC、Orleans这样广泛使用的Web框架,今天通过本文给大家详细介绍下.NET Core读取appsettings.json配置的方法,感兴趣的朋友一起看看吧

这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 ——IConfiguration ,一种叫优雅的方法 —— IOptions 。

1)先看丑陋的方法

比如在RedisClient 中需要读取appsettings.json 中的 redis 连接字符串:

{
  "redis": {
    "ConnectionString": "xxx"
  }
}

需要在RedisClient 的构造函数参数中添加IConfiguration 接口,并通过它直接读取:

public class RedisClient
{
    private readonly string _connectionString;

    public RedisClient(IConfiguration configuration)
    {
        _connectionString = configuration.GetSection("redis")["ConnectionString"];
    }
}

然后在 Startup 的ConfigureServices() 方法中进行注入:

public IConfigurationRoot Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IConfiguration>(Configuration);     
}

2)接着看优雅的方法

首先定义一个存放连接字符串的配置类 RedisOptions :

public class RedisOptions
{
    public string ConnectionString { get; set; }
}

然后给RedisClient 的构造函数参数中添加IOptions<RedisOptions> 接口,通过IOptions<RedisOptions> 读取配置,RedisClient 无需关心 appsettings.json :

public class RedisClient
{
    private readonly RedisOptions _redisOptions;

    public RedisClient(IOptions<RedisOptions> redisOptions)
    {
        _redisOptions = redisOptions.Value;
    }
}

而 appsettings.json 中的配置可以在 Startup 的ConfigureServices() 中注入进去:

services.AddOptions();
services.Configure<RedisOptions>(Configuration.GetSection("redis"));

(注:使用上面的 Configure 方法需要安装 nuget 包Microsoft.Extensions.Options.ConfigurationExtensions )

作为类库的设计者,你可以更贴心些,写个扩展方法进行上面的注入操作。

到此这篇关于.NET Core类库项目中如何读取appsettings.json中的配置的文章就介绍到这了,更多相关.NET Core读取appsettings.json配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈MVC框架的优点(翻译)

    浅谈MVC框架的优点(翻译)

    这篇文章主要介绍了浅谈MVC框架的优点(翻译),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-11-11
  • Asp.NET页面中事件加载的先后顺序详解

    Asp.NET页面中事件加载的先后顺序详解

    这篇文章主要给大家介绍了关于Asp.NET页面中事件加载的先后顺序,文中通过图文以及示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    这篇文章主要介绍了浅谈AjaxPro.dll,asp.net 前台js调用后台方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题

    ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题

    下面小编就为大家带来一篇ASP.Net MVC_DotNetZip简单使用方法,解决文件压缩的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • asp.net 不用组件的URL重写(适用于较大型项目)

    asp.net 不用组件的URL重写(适用于较大型项目)

    网上很多关于url重写的教程都推荐下载某某某组件, 我个人不喜欢这样,即使是M$的组件也一样,因为我们干程序员的,越贴近真相越好。那么我也写一个关于url重写的文章,希望对和我一样有个性的coder们有点帮助。
    2009-04-04
  • Visual Studio 2017安装失败的解决方法

    Visual Studio 2017安装失败的解决方法

    这篇文章主要为大家详细介绍了Visual Studio 2017安装失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • .NET基础之自定义泛型分析

    .NET基础之自定义泛型分析

    这篇文章主要介绍了.NET基础之自定义泛型,实例分析了定义泛型类、default关键字、约束类型等的用法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • Razor TagHelper实现Markdown转HTML的方法

    Razor TagHelper实现Markdown转HTML的方法

    下面小编就为大家分享一篇Razor TagHelper实现Markdown转HTML的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • asp.net中不能在DropDownList中选择多个项 原因分析及解决方法

    asp.net中不能在DropDownList中选择多个项 原因分析及解决方法

    不能在 DropDownList 中选择多个项,在前一步操作的过程中,已经选择了某个Item
    2012-10-10
  • asp.net实现调用带有输出参数的存储过程实例

    asp.net实现调用带有输出参数的存储过程实例

    这篇文章主要介绍了asp.net实现调用带有输出参数的存储过程,结合实例形式分析了前端基于jQuery的ajax调用及后台存储过程调用的相关技巧,需要的朋友可以参考下
    2016-03-03

最新评论