• .net core读取配置文件appsetting.json内容


    appsetting.json内容

    //省略部分代码...
    //代码生成相关
      "CodeCreatorInfo": {
        "xmlPath": "11111", //xml路径(绝对路径)
        "jsRootPaht": "2222", //js文件夹路径
        "Controllers": "333", //特殊Controller列表,逗号隔开
        "NameSpace": "4444" //有效命名空间:"App.Web."之后的内容,主要用于多项目的项目,以逗号分隔,例如:APIControllers1,APIControllers2
      } 
    //省略部分代码...

    方法一:控制器中获取json,采用依赖注入的方式

    1、引用库

    using Microsoft.Extensions.Configuration;

    2、使用接口服务:IConfiguration

    注:观察这个类,这已经被 CodeCreatorController 自动注入了,无需手动做注入操作

    using Microsoft.Extensions.Configuration;
    
    namespace App.Web.APIControllers
    {
        /// <summary>
        /// js代码生成接口
        /// </summary>
        [Route("api/[controller]/[action]")]
        [ApiController]
        public class CodeCreatorController : BaseAPIController1
        {
            /// <summary>
            /// 自动注入
            /// </summary>
            /// <param name="configuration"></param>
            public CodeCreatorController(IConfiguration configuration)
            {
                _configuration = configuration;
            }
            public IConfiguration _configuration { get; }
    
    
            /// <summary>
            /// 获取XML文档内容,生成js文件内容,生成两种,分别用于页面和小程序
            /// </summary>
            [HttpGet]
            public JsonResult CreateJsByXML()
            {
                //获取appsettiong配置内容
                var CodeCreatorInfo = _configuration.GetSection("CodeCreatorInfo");
                string xmlPath = _configuration.GetSection("CodeCreatorInfo")["xmlPath"];
                
                /*
                省略部分代码            
                */
            }
        }
    }

    注意:如果项目中需要用到反射,此时对应当前 Controller  的反射时会出错。可以使用方法二

    方法二:在.net core 类库中读取json文件

    1、添加引用:

    using System.Configuration;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.Json;

    2、加载配置文件的服务类:

      /// <summary>
        /// 获取appsetting的服务类
        /// </summary>
        public class AppConfigurtaionServices
        {
            public static IConfiguration Configuration { get; set; }
            static AppConfigurtaionServices()
            {
                //ReloadOnChange = true 当appsettings.json被修改时重新加载            
                Configuration = new ConfigurationBuilder()
                //.SetBasePath(Directory.GetCurrentDirectory())
                //AppDomain.CurrentDomain.BaseDirectory是程序集基目录,所以appsettings.json,需要复制一份放在程序集目录下,
                .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
                .Build();
            }
        }

    3、获取数据:

    /*省略部分代码*/ 
    //类库中读取:两种取值方式【OK】
    var xmlPath = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo:xmlPath").Value;
    var jsRootPaht = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("jsRootPaht").Value;
    var Controllers = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("Controllers").Value;
    var NameSpace = AppConfigurtaionServices.Configuration.GetSection("CodeCreatorInfo").GetSection("NameSpace").Value;
    var ControllersArray = Controllers.Split(',');
    var NameSpaceArray = NameSpace.Split(',');
    /*省略部分代码*/ 
  • 相关阅读:
    JDBC事务管理
    JDBC常见操作
    Java集合之List接口
    Nginx+Keepalived+Lvs实现双机热备
    Nginx+Consul+Upsync实现动态负载均衡
    DNS域名解析概念
    WPF中实现两个窗口之间传值
    C# 重写(override)和覆盖(new)
    C# DateTime.Now函数
    WPF中在后台实现控件样式
  • 原文地址:https://www.cnblogs.com/dyhao/p/13065774.html
Copyright © 2020-2023  润新知