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


当前第2页 返回上一页

所以我们从这里可以看出添加JSON文件的方法除了通过扩展方法来实现外还有直接实例化JsonConfigurationSource来实现,如下:


1

2

3

4

5

IConfiguration config = new ConfigurationBuilder()

    .SetBasePath(currentClassDir)

    .AddJsonFile("appsettings.json", false, true)

    .Add(new JsonConfigurationSource { Path = "appsettings.json", Optional = false, ReloadOnChange = true })

    .Build();

上述添加JSON文件皆可,我发现添加JSON文件必须设置JSON文件所在的目录即必须首先要设置SetBasePath方法,否则会报如下错误:

我们搞个测试JSON文件放在当前项目(StudyEFCore.Data)中如下:

最终读取类库项目JSON配置文件,将其封装起来就成了如下这个样子:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

public class JsonConfigurationHelper

 {

  public T GetAppSettings<T>(string key) where T : class, new()

  {

   var baseDir = AppContext.BaseDirectory;

   var indexSrc = baseDir.IndexOf("src");

   var subToSrc = baseDir.Substring(0, indexSrc);

   var currentClassDir = subToSrc + "src" + Path.DirectorySeparatorChar + "StutdyEFCore.Data";

 

   IConfiguration config = new ConfigurationBuilder()

    .SetBasePath(currentClassDir)

    .Add(new JsonConfigurationSource { Path = "appsettings.json", Optional = false, ReloadOnChange = true })

    .Build();

   var appconfig = new ServiceCollection()

    .AddOptions()

    .Configure<T>(config.GetSection(key))

    .BuildServiceProvider()

    .GetService<IOptions<T>>()

    .Value;

   return appconfig;

  }

 }

由上有一个还未解决的问题就是如何得到当前类库项目的路径,没有想到一个好的法子,不知看到此文的你有何高见。简短的调用则是如下:


1

2

3

4

var config = new JsonConfigurationHelper();

  var person = config.GetAppSettings<Person>("JeffckySettings");

  var name = person.Name;

  var age = person.Age;

结果如下:

我们将其类修改为ConfigurationManager,然后将其GetAppSettings方法定义为静态方法,最后如下调用是不是满足了在.net core之前读取web.config中配置数据的问题。哈哈哈:


1

var person = ConfigurationManager.GetAppSettings<Person>("JeffckySettings");

总结

以上就是ASP.NET Core类库项目中如何实现读取配置文件的详解的详细内容!

返回前面的内容

相关阅读 >>

asp.net完成图形验证码的的代码教程

asp.net core如何安装?详解asp.net core安装的实例教程

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

使用asp.net中mvc引擎开发插件系统的示例详解

asp.net 通过ajax实现无刷新分页

asp.net实现生成缩略图及加水印的方法示例

用signair和push.js完成消息推送代码详解

关于操作 asp.net web api的实例

分享asp.net学习笔记(10)webpages email

asp.net控制文件上传的大小方法(超简单)_实用技巧

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




打赏

取消

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

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

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

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

评论

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