.Net Standard(.Net Core)實現獲取配置信息


一、前言

在.Net Framework框架有專門獲取webconfig配置的方法供我們使用,但是在.Net Core或者.Net Standard中沒有可以直接使用的方法來獲取配置文件信息,下面就來實現獲取配置信息。

二、獲取配置信息的實現

在.Net Core中,他的配置信息的載體是一個json文件,我們現在就計划所有項目(包含.Net Framework和.Net Standard(.Net Core)框架)都是json文件作為配置的載體。

首先通過Nuget加載如下的包:

Install-Package Microsoft.Extensions.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.Options
Install-Package Microsoft.Extensions.Options.ConfigurationExtensions

現在我們使用json配置文件的內容有一下格式:

{
  "ConnectionStrings": {
    "CxyOrder": "Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;"
  },
  "Appsettings": {
    "SystemName": "PDF .NET CORE",
    "Date": "2017-07-23",
    "Author": "PDF"
  },
  "ServiceUrl": "https://www.baidu.com/getnews"
}

創建PFTConfiguration.cs文件,代碼如下:

 public class PFTConfiguration
    {
        /// <summary>
        /// PFTConfiguration.Configuration.GetConnectionString("CxyOrder"); 
        /// PFTConfiguration.Configuration["ServiceUrl"];
        /// PFTConfiguration.Configuration["Appsettings:SystemName"];
        /// </summary>
        public static IConfiguration Configuration { get; set; }
        static PFTConfiguration()
        {
            Configuration = new ConfigurationBuilder()
            .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
            .Build();
        }

        /// <summary>
        /// 獲取配置信息
        /// </summary>
        /// <param name="path">json文件類型</param>
        /// <typeparam name="T">返回實體類型</typeparam>
        /// <param name="key">json關鍵字</param>
        /// <returns></returns>
        public static T GetAppsettings<T>(string key, string path) where T : class, new()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(path))
                {
                    throw new Exception("解析配置錯誤,配置文件路徑為空");
                }
                if (string.IsNullOrWhiteSpace(key))
                {
                    throw new Exception("解析配置錯誤,配置key為空");
                }
                var config = new ConfigurationBuilder()
                    .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                    .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true })
                    .Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return appconfig;
            }
            catch (Exception ex)
            {
                throw new Exception("解析配置(對象)異常", ex);
            }

        }


        /// <summary>
        /// 獲取配置信息
        /// </summary>
        /// <param name="key">json關鍵字</param>
        /// <param name="path">json文件類型</param>
        /// <returns></returns>
        public static string GetAppsettings(string key, string path)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(path))
                {
                    throw new Exception("解析配置錯誤,配置文件路徑為空");
                }
                if (string.IsNullOrWhiteSpace(key))
                {
                    throw new Exception("解析配置錯誤,配置key為空");
                }
                var config = new ConfigurationBuilder()
                    .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
                    .Add(new JsonConfigurationSource { Path = path, ReloadOnChange = true, Optional = false })
                    .Build();
                var appconfig = config.GetSection(key).Value;
                return appconfig;
            }
            catch (Exception ex)
            {
                throw new Exception("解析配置(字符串)異常", ex);
            }
        }


    }
}

里面定義了3種獲取方法

1、PFTConfiguration.Configuration["Appsettings:SystemName"] 文件路徑默認為appsettings.json,然后通過節點來獲取,這個方式有點類似於.Net Framework中獲取配置的方法

2、PFTConfiguration.GetAppsettings<T>(string key, string path),他是獲取指定配置文件,指定節點,以T對象的形式返回節點內容

3、PFTConfiguration.GetAppsettings(string key, string path),他是獲取指定配置文件,指定節點,以字符串的形式返回節點內容


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM