ASP.NET CORE 读取配置文件 读取自定义配置文件
我们在读取配置文件(一) appsettings.json中介绍了,如何读取appsettings.json.
但随之产生了问题:我们使用的是在 startup.cs 中(如下图)来实现配置读取,有两个问题 ① 我们如果定义n种配置,是否要再这里添加n条这样的配置 ; ② 如果我们的配置不想写在appsettings.json中呢
解决问题带着上面的两个问题,我们首先来添加一个配置文件 siteconfig.json
{
"sitebaseconfig": {
//文件上传路径
"fileuppath": "/upload/",
//是否启用单用户登录
"issinglelogin": "true",
//允许上传的文件格式
"attachextension": "gif,jpg,jpeg,png,bmp,rar,zip,doc,docx,xls,xlsx,ppt,pptx,txt,flv,apk,mp4,mpg,ts,mpeg,mp3,bak,pdf",
//图片上传最大值kb
"attachimagesize": 12400
}
}
我们在 读取文件配置(一)中的配置类applicationconfiguration
1 public class applicationconfiguration 2 { 3 #region 属性成员 4 5 /// 6 /// 文件上传路径 7 /// 8 public string fileuppath { get; set; } 9 /// 10 /// 是否启用单用户登录 11 /// 12 public bool issinglelogin { get; set; } 13 /// 14 /// 允许上传的文件格式 15 /// 16 public string attachextension { get; set; } 17 /// 18 /// 图片上传最大值kb 19 /// 20 public int attachimagesize { get; set; } 21 #endregion 22 }
在 project.json的buildoptions添加"copytooutput": "siteconfig.json",让该文件在编译的时候自动拷贝到输出目录下(默认为bin目录):
修改读取文件配置(一)的领域层appconfigurtaionservices
public class appconfigurtaionservices
{
public t getappsettings
{
iconfiguration config = new configurationbuilder()
.add(new jsonconfigurationsource { path= "siteconfig.json", reloadonchange=true })
.build();
var appconfig= new servicecollection()
return appconfig; } 说明:我们首先创建了一个configurationbuilder对象,并在它上面注册了一个jsonconfigurationsource。在创建这个jsonconfigurationsource对象的时候,除了指定配置文件(“siteconfig.json”)的路径之外,我们还将它的reloadonchange属性设置为true。这个reloadonchange属性的含义就是当原始配置文件的内容发生改变的时候是否需要重新加载配置。 这时候我们会发现configure 我查看了我们之前在startup中的 services.configure 十分不解,最后发现是少了扩展类microsoft.extensions.options.configurationextensions 我们通过 nuget 添加这个 install-packagemicrosoft.extensions.options.configurationextensions 问题得到解决,在此感谢 @artech 我们来测试一下: ok,这样,我们在文章开始提出的两个问题就都得到了解决! 希望跟大家一起学习asp.net core 刚开始接触,水平有限,很多东西都是自己的理解和翻阅网上大神的资料,如果有不对的地方和不理解的地方,希望大家指正! 虽然asp.net core 现在很火热,但是网上的很多资料都是前篇一律的复制,所以有很多问题我也暂时没有解决,希望大家能共同帮助一下!
.addoptions()
.configure
.buildserviceprovider()
.getservice
.value;
}