IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> C#net6控制台程序中读取appsettings.json -> 正文阅读

[开发工具]C#net6控制台程序中读取appsettings.json

C#net6控制台程序中读取appsettings.json

背景

我们知道,在原来.netframework平台下的控制台程序配置文件为App.config,微软推出跨平台net6平台后,配置文件改为了appsettings.json,不论是开发控制台应用还是web应用都可以用appsettings.json作为配置文件。在net6下开发web应用,可以直接通过注入的方式读取appsettings.json中的配置项,那么在控制台应用下如何读取呢。

具体实现

首先是添加NuGet包依赖,主要依赖一下3个包

  • Microsoft.Extensions.Configuration
  • Microsoft.Extensions.Configuration.FileExtensions
  • Microsoft.Extensions.Configuration.Json

然后我们可以写一个工具类,如下:
ConfigurationHelper.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;

namespace Wongoing.Basic
{
    /// <summary>
    /// appsettings配置读取辅助类
    /// </summary>
    public class ConfigurationHelper
    {
        #region 字段定义

        private static readonly string CONFIGFILELOCK = "CONFIGFILELOCK";
        private static readonly string APPSETTINGS = "AppSettings";
        private static readonly string PROSETTINGS = "ProSettings";
        private static IConfigurationRoot configurationRoot = null;

        #endregion

        #region 单例实现

        private static ConfigurationHelper _instance = null;

        private ConfigurationHelper()
        {
            configurationRoot = new ConfigurationBuilder()
                    .SetBasePath(Path.Combine(Directory.GetCurrentDirectory()))
                    .AddJsonFile("appsettings.json", optional: false)
                    .Build();
        }

        public static ConfigurationHelper Instance
        {
            get
            {
                lock(CONFIGFILELOCK)
                {
                    if (_instance == null)
                    {
                        _instance = new ConfigurationHelper();
                    }
                    return _instance;
                }
            }
        }

        #endregion

        #region GetConnectionString

        /// <summary>
        /// 获取配置文件中ConnectionStrings中某个配置项的数据库连接字符串
        /// </summary>
        /// <param name="key">ConnectionStrings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中ConnectionStrings中某个配置项的数据库连接字符串</returns>
        public string GetConnectionString(string key, string defaultValue)
        {
            string result = configurationRoot.GetConnectionString(key);
            if (result == null)
            {
                return defaultValue;
            }
            else
            {
                return result;
            }
        }

        #endregion

        #region GetAppSetting

        /// <summary>
        /// 获取配置文件中AppSettings中某个配置项的值
        /// </summary>
        /// <param name="key">AppSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中AppSettings中某个配置项的值</returns>
        public string GetAppSetting(string key, string defaultValue)
        {
            string result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(APPSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    result = configurationSection.GetSection(key).Value;
                }
            }
            return result;
        }

        /// <summary>
        /// 获取配置文件中AppSettings中某个配置项的值
        /// </summary>
        /// <param name="key">AppSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中AppSettings中某个配置项的值</returns>
        public int GetAppSetting(string key, int defaultValue)
        {
            int result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(APPSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    string strResult = configurationSection.GetSection(key).Value;
                    int.TryParse(strResult, out result);
                }
            }
            return result;
        }

        /// <summary>
        /// 获取配置文件中AppSettings中某个配置项的值
        /// </summary>
        /// <param name="key">AppSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中AppSettings中某个配置项的值</returns>
        public bool GetAppSetting(string key, bool defaultValue)
        {
            bool result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(APPSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    string strResult = configurationSection.GetSection(key).Value;
                    bool.TryParse(strResult, out result);
                }
            }
            return result;
        }

        /// <summary>
        /// 获取配置文件中AppSettings中某个配置项的值
        /// </summary>
        /// <param name="key">AppSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中AppSettings中某个配置项的值</returns>
        public double GetAppSetting(string key, double defaultValue)
        {
            double result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(APPSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    string strResult = configurationSection.GetSection(key).Value;
                    double.TryParse(strResult, out result);
                }
            }
            return result;
        }

        #endregion

        #region GetProSetting

        /// <summary>
        /// 获取配置文件中ProSettings中某个配置项的值
        /// </summary>
        /// <param name="key">ProSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中ProSettings中某个配置项的值</returns>
        public string GetProSetting(string key, string defaultValue)
        {
            string result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(PROSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    result = configurationSection.GetSection(key).Value;
                }
            }
            return result;
        }

        /// <summary>
        /// 获取配置文件中ProSettings中某个配置项的值
        /// </summary>
        /// <param name="key">ProSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中ProSettings中某个配置项的值</returns>
        public int GetProSetting(string key, int defaultValue)
        {
            int result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(PROSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    string strResult = configurationSection.GetSection(key).Value;
                    int.TryParse(strResult, out result);
                }
            }
            return result;
        }

        /// <summary>
        /// 获取配置文件中ProSettings中某个配置项的值
        /// </summary>
        /// <param name="key">ProSettings中某个配置项</param>
        /// <param name="defaultValue">如果没有找到对应的配置项,则返回默认值</param>
        /// <returns>返回配置文件中ProSettings中某个配置项的值</returns>
        public bool GetProSetting(string key, bool defaultValue)
        {
            bool result = defaultValue;
            IConfigurationSection configurationSection = configurationRoot.GetSection(APPSETTINGS);
            if (configurationSection != null)
            {
                if (configurationSection.GetSection(key) != null)
                {
                    string strResult = configurationSection.GetSection(key).Value;
                    bool.TryParse(strResult, out result);
                }
            }
            return result;
        }

        #endregion
    }
}

使用方法

appsettings.json内容实例如下:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=10.10.80.15;Port=3306;DataBase=wongoing-dcs;User Id=root;Password=root@123;Allow User Variables=True;Connection Timeout=15"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ProSettings": {
    "NavTheme": "dark",
    "Layout": "side",
    "ContentWidth": "Fluid",
    "FixedHeader": true,
    "FixSiderbar": true,
    "Title": "工业数采",
    "PrimaryColor": "daybreak",
    "ColorWeak": false,
    "SplitMenus": false,
    "HeaderRender": true,
    "FooterRender": true,
    "MenuRender": true,
    "MenuHeaderRender": true,
    "HeaderHeight": 48
  }
}

public static readonly string Title = Wongoing.Basic.ConfigurationHelper.Instance.GetProSetting("Title", "工业数采");

/// <summary>
/// 默认数据库连接字符串
/// </summary>
public static readonly string DefaultConnection = Wongoing.Basic.ConfigurationHelper.Instance.GetConnectionString("DefaultConnection", "Server=localhost;DataBase=wongoing-dcs;User Id=root;Password=wongoing@123;Allow User Variables=True;Connection Timeout=15");

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:42:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:49:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码