netcore 非注入全局获取配置文件
- 作者: 妖娆的童童
- 来源: 51数据库
- 2021-08-09
在netcore开发中,最常见的就是注入,比如想获取appsettings.json的内容,我们就需要去注入,然后在controller里面去获取,但是我们如果想要在service中使用appsettings.json的内容,这样就是一个问题,并且每个controller去注入也是非常麻烦的事情
下面的注入的(这种方法百度一下可以出来几百条相同的搜索结果。。。参见)
services.addoptions();
services.configure<appsettings>(configuration.getsection("appsettings"));
然后获取使用

我想要在service类库里面使用,这时该如何使用哪?
直接上代码:
public class appsettings
{
public string teststring { get; set; }
public string configversion { get; set; }
public string connectionstring { get; set; }
public string redisexchangehosts { get; set; }
public string uploadpath { get; set; }
}
public startup(iconfiguration configuration, iloggerfactory factory, ihostingenvironment env)
{
environmentname = env.environmentname;
configuration = configuration;
// 将内置的日志组件设置为 nhibernate 的日志组件
var builder = new configurationbuilder()
.setbasepath(env.contentrootpath)
.addjsonfile("appsettings.json", optional: true, reloadonchange: true)
.addjsonfile($"appsettings.{env.environmentname}.json", optional: true)//增加环境配置文件,新建项目默认有
.addenvironmentvariables();
new appsettingprovider().initial(configuration);
configuration = builder.build();
}
public class appsettingprovider
{
private static appsettings _myappsettings;
public static appsettings _appsettings { get { return _myappsettings; } }
public void initial(iconfiguration configuration)
{
_myappsettings = new appsettings() {
configversion = configuration["appsettings:configversion"],
connectionstring = configuration["appsettings:connectionstring"],
teststring = configuration["appsettings:teststring"],
redisexchangehosts = configuration["appsettings:redisexchangehosts"],
uploadpath = configuration["appsettings:uploadpath"]
};
}
}
这样,我们在要使用的时候只需要appsettingprovider._appsettings.xxxx即可,不需要进行重复的、实现
有错误或者片面地方欢迎指正
推荐阅读
