.NET配置文件大揭秘:輕鬆讀取JSON、XML、INI和環境變數

来源:https://www.cnblogs.com/hanbing81868164/p/18022302
-Advertisement-
Play Games

概述:.NET中的IConfiguration介面提供了一種多源讀取配置信息的靈活機制,包括JSON、XML、INI文件和環境變數。通過示例,清晰演示了從這些不同源中讀取配置的方法,使配置獲取變得方便且易於擴展。這種方式適用於不同場景,如API密鑰、資料庫連接等,為應用提供了高度可配置性。 在.NE ...


 

概述:.NET中的IConfiguration介面提供了一種多源讀取配置信息的靈活機制,包括JSON、XML、INI文件和環境變數。通過示例,清晰演示了從這些不同源中讀取配置的方法,使配置獲取變得方便且易於擴展。這種方式適用於不同場景,如API密鑰、資料庫連接等,為應用提供了高度可配置性。

在.NET中,IConfiguration介面提供了一種靈活的方式來管理和讀取應用程式配置信息。這可以包括來自不同源的配置信息,如JSON、XML、INI文件以及環境變數。

讀取JSON文件:

JSON文件通常用於保存結構化的配置信息,例如Web應用的設置、API密鑰等。

JSON文件內容如下:

{
  "AppSettings": {
    "ApiKey": "your_api_key",
    "LogLevel": "Info"
  },
  "DatabaseSettings": {
    "ConnectionString": "your_connection_string",
    "TimeoutSeconds": 30
  }
}

實例描述:

using Microsoft.Extensions.Configuration;
using System;

public class JsonConfigReader
{
    public static IConfigurationRoot ReadJsonFile(string filePath)
    {
        try
        {
            // 創建ConfigurationBuilder
            var builder = new ConfigurationBuilder();

            // 添加Json文件作為配置源
            builder.AddJsonFile(filePath);

            // 構建IConfigurationRoot
            IConfigurationRoot config = builder.Build();

            return config;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"讀取JSON文件失敗: {ex.Message}");
            return null;
        }
    }
}

使用示例:

public class Program
{
    public static void Main()
    {
        // 指定JSON文件路徑
        string jsonFilePath = "appsettings.json";

        // 讀取JSON文件內容
        IConfigurationRoot config = JsonConfigReader.ReadJsonFile(jsonFilePath);

        if (config != null)
        {
            // 獲取配置項
            string apiKey = config["AppSettings:ApiKey"];
            string connectionStr = config["DatabaseSettings:ConnectionString"];

            Console.WriteLine($"API Key: {apiKey}, Database Connection: {connectionStr}");
        }
    }
}

讀取XML文件:

XML文件常用於保存包含大量元數據的配置信息,例如Windows應用程式配置。

XML文件內容如下:

<configuration>
  <AppSettings>
    <ApiKey>your_api_key</ApiKey>
    <LogLevel>Info</LogLevel>
  </AppSettings>
  <DatabaseSettings>
    <ConnectionString>your_connection_string</ConnectionString>
    <TimeoutSeconds>30</TimeoutSeconds>
  </DatabaseSettings>
</configuration>

實例描述:

using Microsoft.Extensions.Configuration;
using System;

public class XmlConfigReader
{
    public static IConfigurationRoot ReadXmlFile(string filePath)
    {
        try
        {
            // 創建ConfigurationBuilder
            var builder = new ConfigurationBuilder();

            // 添加Xml文件作為配置源
            builder.AddXmlFile(filePath);

            // 構建IConfigurationRoot
            IConfigurationRoot config = builder.Build();

            return config;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"讀取XML文件失敗: {ex.Message}");
            return null;
        }
    }
}

使用示例:

public class Program
{
    public static void Main()
    {
        // 指定XML文件路徑
        string xmlFilePath = "appsettings.xml";

        // 讀取XML文件內容
        IConfigurationRoot config = XmlConfigReader.ReadXmlFile(xmlFilePath);

        if (config != null)
        {
            // 獲取配置項
            string apiKey = config["AppSettings:ApiKey"];
            string connectionStr = config["DatabaseSettings:ConnectionString"];

            Console.WriteLine($"API Key: {apiKey}, Database Connection: {connectionStr}");
        }
    }
}

讀取INI文件:

INI文件是一種簡單的配置文件格式,通常用於保存簡單的鍵值對配置。

INI文件內容如下:

[AppSettings]
ApiKey=your_api_key
LogLevel=Info

[DatabaseSettings]
ConnectionString=your_connection_string
TimeoutSeconds=30

實例描述:

using Microsoft.Extensions.Configuration;
using System;

public class IniConfigReader
{
    public static IConfigurationRoot ReadIniFile(string filePath)
    {
        try
        {
            // 創建ConfigurationBuilder
            var builder = new ConfigurationBuilder();

            // 添加Ini文件作為配置源
            builder.AddIniFile(filePath);

            // 構建IConfigurationRoot
            IConfigurationRoot config = builder.Build();

            return config;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"讀取INI文件失敗: {ex.Message}");
            return null;
        }
    }
}

使用示例:

public class Program
{
    public static void Main()
    {
        // 指定INI文件路徑
        string iniFilePath = "appsettings.ini";

        // 讀取INI文件內容
        IConfigurationRoot config = IniConfigReader.ReadIniFile(iniFilePath);

        if (config != null)
        {
            // 獲取配置項
            string apiKey = config["AppSettings:ApiKey"];
            string connectionStr =

 config["DatabaseSettings:ConnectionString"];

            Console.WriteLine($"API Key: {apiKey}, Database Connection: {connectionStr}");
        }
    }
}

讀取環境變數:

環境變數通常用於存儲敏感信息,如API密鑰或資料庫連接字元串。

實例描述:

using Microsoft.Extensions.Configuration;
using System;

public class EnvConfigReader
{
    public static IConfigurationRoot ReadEnvironmentVariables()
    {
        try
        {
            // 創建ConfigurationBuilder
            var builder = new ConfigurationBuilder();

            // 添加環境變數作為配置源
            builder.AddEnvironmentVariables();

            // 構建IConfigurationRoot
            IConfigurationRoot config = builder.Build();

            return config;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"讀取環境變數失敗: {ex.Message}");
            return null;
        }
    }
}

使用示例:

public class Program
{
    public static void Main()
    {
        // 讀取環境變數內容
        IConfigurationRoot config = EnvConfigReader.ReadEnvironmentVariables();

        if (config != null)
        {
            // 獲取配置項
            string apiKey = config["AppSettings:ApiKey"];
            string connectionStr = config["DatabaseSettings:ConnectionString"];

            Console.WriteLine($"API Key: {apiKey}, Database Connection: {connectionStr}");
        }
    }
}

以上代碼提供了使用IConfiguration讀取JSON、XML、INI文件以及環境變數的通用方法,使得配置信息的獲取更加靈活和便捷。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引入依賴 <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.7</version> </dependency> 基本用法 try (Entry ent ...
  • 一、程式計數器 程式計數器記憶體很小,可以看作是當前線程所執行位元組碼的行號指示器。 有了它,程式就能被正確的執行。 因為有線程切換的存在,則每個線程必須有各自獨立的程式計數器,即線程私有的記憶體。 這裡再解釋一下什麼是線程切換,線程切換指的是: 單處理器在執行多線程時所進行的線程切換,多線程的交替運行會 ...
  • 常見內置序列類型(Sequence Type) 類型 英文名 對應關鍵字 構造函數 是否可變 列表 list list list() 可變 元組 tuple tuple tuple() 不可變 數字序列:range range range range() 不可變 文本序列:字元串 string st ...
  • 最近看幾個老項目的SQL條件中使用了1=1,想想自己也曾經這樣寫過,略有感觸,特別拿出來說道說道。編寫SQL語句就像炒菜,每一種調料的使用都會影響菜品的最終味道,每一個SQL條件的加入也會影響查詢的執行效率。那麼 1=1 存在什麼樣的問題呢?為什麼又會使用呢? ...
  • Unity 預設可以序列化值類型, Serializable屬性修飾的類型, 派生自UnityEngine.Object的類型, 通常這些類型已經足以供日常使用了. 但是有時我們希望在編輯器面板上序列化一個介面或者抽象類, 則需要用到 SerializeReference屬性. 假定我們有一個介面I ...
  • 背景 在瀏覽器中訪問本地靜態資源html網頁時,可能會遇到跨域問題如圖。 是因為瀏覽器預設啟用了同源策略,即只允許載入與當前網頁具有相同源(協議、功能變數名稱和埠)的內容。 WebView2預設情況下啟用了瀏覽器的同源策略,即只允許載入與主機相同源的內容。所以如果我們把靜態資源發佈到iis或者通過node ...
  • 一:nacos https://nacos.io/docs/latest/what-is-nacos/ https://github.com/alibaba/nacos 二:consul https://developer.hashicorp.com/consul/docs?product_inte ...
  • 概述:MVVM Toolkit是.NET平臺的強大工具包,旨在簡化MVVM應用程式開發。提供基礎功能如ViewModelBase和RelayCommand,支持數據綁定和命令綁定,通過Messenger實現消息訂閱發佈。其高級功能包括ObservableObject和WeakEventListene ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...