发布时间:2025-10-15 18:07:56    次浏览
我们在中介绍了,如何读取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 在 project.json 的 buildOptions添加 'copyToOutput': 'siteconfig.json',让该文件在编译的时候自动拷贝到输出目录下(默认为bin目录): 修改 的领域层 AppConfigurtaionServices 说明:我们首先创建了一个ConfigurationBuilder对象,并在它上面注册了一个JsonConfigurationSource。在创建这个JsonConfigurationSource对象的时候,除了指定配置文件(“siteconfig.json”)的路径之外,我们还将它的ReloadOnChange属性设置为True。这个ReloadOnChange属性的含义就是当原始配置文件的内容发生改变的时候是否需要重新加载配置。这时候我们会发现 ConfigureT(config.GetSection(key)) 报错:我查看了我们之前在Startup中的 services.ConfigureT()发现,这个里面的参数是有两个重载的 一个是IConfiguration一个是System.ActionT,那么为什么这里重载不出来了呢?十分不解,最后发现是少了扩展类 Microsoft.Extensions.Options.ConfigurationExtensions我们通过 NuGet添加这个Install-Package Microsoft.Extensions.Options.ConfigurationExtensions问题得到解决,在此感谢我们来测试一下: OK,这样,我们在文章开始提出的两个问题就都得到了解决!