ASP.NET Core类库项目中如何实现读取配置文件的详解


本文摘自PHP中文网,作者黄舟,侵删。

这篇文章主要给大家介绍了关于如何在ASP.NET Core类库项目中读取配置文件的相关资料,这是朋友提的一个问题,文中通过示例代码介绍的非常详解,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。

前言

最近有朋友问如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇文章的出现,正常来讲我们在应用程序目录下有个appsettings.json文件对于相关配置都会放在这个json文件中,但是要是我建立一个类库项目,对于一些配置比如密钥或者其他需要硬编码的数据放在JSON文件中,在.net core之前配置文件为web.config并且有相关的类来读取节点上的数据,现如今在.net core中为json文件,那么我们该如何做?本文就此应运而生。

.NET Core类库项目读取JSON配置文件

在应用程序目录下添加JSON文件是进行如下配置:


1

2

3

4

5

6

var builder = new ConfigurationBuilder()

    .SetBasePath(env.ContentRootPath)

    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)

    .AddEnvironmentVariables();

    Configuration = builder.Build();

然后读取配置文件的节点,如下:


1

2

3

4

5

6

public void ConfigureServices(IServiceCollection services)

  {

 

   services.Configure<BlogViewModel>(Configuration.GetSection("JeffckySettings"));

   ......

   }

但是如果项目是在类库中呢,当然我们也可以将配置值放在应用程序下的appsettings.json中,但是为了不让其json文件中看起来显得非常臃肿同时在类库中的配置数据我们理应放在类库中来统一管理,所以我们得另外再想方案,总不能在类库中建立startup.cs类,再来实例化Configuration吧,这样想想应该也是可以,我没尝试过,难道就没有很简单的方式么,难道就不能像.net core之前用类来读取web.config我们只需要给出键而得到值吗?或者说通过强类型配置来统一管理配置数据,这个才应该是我们尝试的方向。好了,说了这么多,我们就开干。我们首先来复习下.net core中是如何获取应用程序路径的。

.NET Core获取应用程序路径

在.NET 4.X之前获取当前应用程序根目录路径和名称可以通过如下获取


1

2

var basePath = AppDomain.CurrentDomain.BaseDirectory;

var appName = AppDomain.CurrentDomain.ApplicationIdentity.FullName;

当然也可以通过如下来获取应用程序根目录而不是得到bin目录


1

Directory.GetCurrentDirectory()

在.net core中获取bin目录路径通过如下来获取更加简洁。


1

AppContext.BaseDirectory

在.NET 4.X之前获取应用程序集名称通过如下来获取:


1

Assembly.GetEntryAssembly().GetName().Name;

在.net core中通过如下来获取:


1

var name = typeof(T).GetTypeInfo().Assembly.GetName().Name;

版本通过如下来获取(.net core也一样):


1

Assembly.GetEntryAssembly().GetName().Version.ToString()

在类库项目中我们利用强类型配置来实现读取配文件数据,我们首先需要下载如下扩展。

在ConfigurationBuilder类中如下一个Add添加方法:


1

2

3

4

5

6

7

8

9

10

11

//

  // 摘要:

  //  Adds a new configuration source.

  //

  // 参数:

  // source:

  //  The configuration source to add.

  //

  // 返回结果:

  //  The same Microsoft.Extensions.Configuration.IConfigurationBuilder.

  public IConfigurationBuilder Add(IConfigurationSource source);

对于AddJsonFile扩展方法来添加JSON文件名,文件路径已经通过SetBasePath()方法来实现,一切配置都是基于IConfigurationBuilder接口,其中就有一个JsonConfigurationSource类,实现如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//

 // 摘要:

 //  Represents a JSON file as an Microsoft.Extensions.Configuration.IConfigurationSource.

 public class JsonConfigurationSource : FileConfigurationSource

 {

  public JsonConfigurationSource();

 

  //

  // 摘要:

  //  Builds the Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider

  //  for this source.

  //

  // 参数:

  // builder:

  //  The Microsoft.Extensions.Configuration.IConfigurationBuilder.

  //

  // 返回结果:

  //  A Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider

  public override IConfigurationProvider Build(IConfigurationBuilder builder);

 }

我们再看其父类就有一个添加JSON文件路径的方法,如下:

阅读剩余部分

相关阅读 >>

asp.net使用x509certificate2出现的一些问题的解决方法分享(图)

详细介绍asp.net中的c#基础知识

asp.net中关于config文件如何读写的实例分享

asp.net core mvc应用程度中如何读取当前url请求参数(querystring)的值?

什么是asp.net core?介绍asp.net core的优势

详细介绍asp.net core静态文件的使用教程

asp.net web api 异常处理经验总结

asp.net mvc5请求处理管道和生命周期的详细教程

asp.net 验证正则表达式方法总结

理解asp.net中webform的生命周期_实用技巧

更多相关阅读请进入《asp.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...