• .net core 读取、修改配置文件appsettings.json


    .net core 设置读取JSON配置文件 appsettings.json

    Startup.cs 中

        public class Startup
        {
            public Startup(IHostingEnvironment env)
            {
                Configuration = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)  //增加环境配置文件,新建项目默认有
                    .AddEnvironmentVariables()
                    .Build();
            }
            public IConfiguration Configuration { get; }
    ....
    

    类库中

                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .AddJsonFile("appsettings.Test.json", true, reloadOnChange: true);
    
                var config = builder.Build();
    
                //读取配置
               var a = config["JWTSettings:Secret"];
    

    使用.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)这种方法可以保证可以修改正在运行的dotnet core 程序,不需要重启程序

    使用Newtonsoft.Json 查询/修改,以及修改 appsettings.json 文件

    ReadObject

            public IActionResult ReadObject()
            {
                string json = @"{
       'CPU': 'Intel',
       'PSU': '500W',
       'Drives': [
         'DVD read/writer'
         /*(broken)*/,
         '500 gigabyte hard drive',
         '200 gigabyte hard drive'
       ]
    }";
    
                JsonTextReader reader = new JsonTextReader(new StringReader(json));
                var string1 = "";
                while (reader.Read())
                {
                    if (reader.Value != null)
                    {
                        string1 += "reader.Value != null: Token: " + reader.TokenType + ", Value: " + reader.Value + " <br/>";
                    }
                    else
                    {
                        string1 += "reader.Value == null: Token: " + reader.TokenType + " <br/>";
                    }
                }
    
                ViewData["string"] = string1;
                return View();
            }
    

    ReadJSON 读取Json 文件

    Newtonsoft.Json

    使用Newtonsoft.Json效果如截图

        public class HomeController : Controller
        {
            private readonly IHostingEnvironment _hostingEnvironment;
            public HomeController(IHostingEnvironment hostingEnvironment)
            {
                _hostingEnvironment = hostingEnvironment;
            }
    
            public IActionResult ReadJSON()
            {
                string contentPath = _hostingEnvironment.ContentRootPath + @""; ;   //项目根目录
                var filePath = contentPath + "appsettings.json";
                using (StreamReader file = new StreamReader(filePath))
                using (JsonTextReader reader = new JsonTextReader(file))
                {
                    JObject o2 = (JObject)JToken.ReadFrom(reader);
    
                    string LicenceKey = (string)o2["appSettings"]["Key"];
    
                    ViewData["string"] = LicenceKey;
                    return View();
                }
            }
    

    Microsoft.Extensions.Configuration

    使用Microsoft.Extensions.Configuration

            public IActionResult Index()
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json")
                    .AddJsonFile("appsettings.Test.json", true, reloadOnChange: true);
    
                var config = builder.Build();
    
                //读取配置
                ViewData["Secret"] = config["appSettings:Key"];
                return View();
            }
    

    修改 appsettings.json后的效果

    • Newtonsoft.Json

    • Microsoft.Extensions.Configuration

    修改 appsettings.json

    StreamWriter直接覆盖

        public class HomeController : Controller
        {
            private readonly IHostingEnvironment _hostingEnvironment;
            public HomeController(IHostingEnvironment hostingEnvironment)
            {
                _hostingEnvironment = hostingEnvironment;
            }
            public IActionResult WriteJSON()
            {
                string contentPath = _hostingEnvironment.ContentRootPath + @""; ;   //项目根目录
                var filePath = contentPath + "appsettings.json";
                JObject jsonObject;
                using (StreamReader file = new StreamReader(filePath))
                using (JsonTextReader reader = new JsonTextReader(file))
                {
                    jsonObject = (JObject)JToken.ReadFrom(reader);
                    jsonObject["appSettings"]["Key"] = "asdasdasdasd";
                }
    
                using (var writer = new StreamWriter(filePath))
                using (JsonTextWriter jsonwriter = new JsonTextWriter(writer))
                {
                    jsonObject.WriteTo(jsonwriter);
                }
    
                return View();
            }
    

    效果如图

    缺点 格式化的json和注释都没了

  • 相关阅读:
    Lotto--poj2245
    Avoid The Lakes--poj3620
    Fire Net--hdu1045
    变形课--hdu1181
    Apache Mina入门实例
    谈谈项目
    设计模式之装饰者模式
    linux下的权限控制
    centos 6.5 搭建JSP运行环境
    centos 6.5 搭建ftp服务器
  • 原文地址:https://www.cnblogs.com/WNpursue/p/10858727.html
Copyright © 2020-2023  润新知