您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > .NET

.NET配置文件大揭秘:轻松读取JSON、XML、INI和环境变量

时间:2023-12-28 15:32:52  来源:今日头条  作者:架构师老卢

概述:.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文件以及环境变量的通用方法,使得配置信息的获取更加灵活和便捷。



Tags:.NET   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
.Net开发中十种常见的内存错误以及相应的解决方案
在.Net开发中,为内存管理方面提供了许多便利,但仍然存在一些常见的错误和陷阱。这些错误可能导致内存泄漏、性能下降、异常抛出等问题,严重影响应用程序的稳定性和性能。在软件...【详细内容】
2024-03-26  Search: .NET  点击:(12)  评论:(0)  加入收藏
.NET配置文件大揭秘:轻松读取JSON、XML、INI和环境变量
概述:.NET中的IConfiguration接口提供了一种多源读取配置信息的灵活机制,包括JSON、XML、INI文件和环境变量。通过示例,清晰演示了从这些不同源中读取配置的方法,使配置获取变得...【详细内容】
2023-12-28  Search: .NET  点击:(92)  评论:(0)  加入收藏
.Net开发都应当掌握的泛型基础知识集合
在C#编程语言中,泛型是一项非常强大和重要的功能。它允许我们编写更加灵活和通用的代码,同时提高代码的可重用性和性能。本文将介绍C#泛型的一些关键知识点,帮助读者理解和应用...【详细内容】
2023-12-25  Search: .NET  点击:(123)  评论:(0)  加入收藏
作为 .NET 开发人员,我为什么开始使用 Python?
作者 | Alex Maher编译 | 小欧作为一名 .NET 开发人员,很长一段时间以来,我一直关注 C# 和 .NET 的出色工具和功能。但我最近开始使用 Python,感觉非常棒。这里申明一点,这篇文...【详细内容】
2023-12-25  Search: .NET  点击:(142)  评论:(0)  加入收藏
.NET领域性能最好的对象映射框架Mapster使用方法
Mapster是一个开源的.NET对象映射库,它提供了一种简单而强大的方式来处理对象之间的映射。在本文中,我将详细介绍如何在.NET中使用Mapster,并提供一些实例和源代码。和其它框架...【详细内容】
2023-12-22  Search: .NET  点击:(76)  评论:(0)  加入收藏
.NET Core 3.1 升级到 .NET 8,看看都有哪些变化
.NET Core 3.1 已经用了很长一段时间,其实在 2022 年的年底微软已经不提供支持了,后面的一个 LTS 版本 .NET 6 也会在 2024 年 11 月终止支持,所以直接升级到 .NET 8 是最好的...【详细内容】
2023-12-08  Search: .NET  点击:(191)  评论:(0)  加入收藏
.NET Core的中间件来对Web API进行流量限制实现方法
在.NET Core中,我们可以使用ASP.NET Core的中间件来对Web API进行流量限制。ASP.NET Core提供了一个名为RateLimit的开源库,可以方便地实现流量限制功能。下面将详细介绍如何...【详细内容】
2023-12-06  Search: .NET  点击:(175)  评论:(0)  加入收藏
微软官方出品微服务架构:十个.Net开源项目
1、一个高性能类型安全的.NET枚举实用开源库Enums.NET是一个.NET枚举实用程序库,专注于为枚举提供丰富的操作方法。它支持.NET Framework和.Net Core。它主要优点表现在类型...【详细内容】
2023-12-06  Search: .NET  点击:(130)  评论:(0)  加入收藏
.NET开源的处理分布式事务的解决方案
前言在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战。今天给大家推荐一个.NET开源的处理分布式事务...【详细内容】
2023-11-30  Search: .NET  点击:(173)  评论:(0)  加入收藏
深入 .NET 异步编程:Task 与 ValueTask 的区别与选择
在 .NET 中,Task 和 ValueTask 都是用于表示异步操作的类型,但它们有一些重要的区别。TaskTask 是最常见的表示异步操作的类型。它通常用于表示耗时的、异步的操作,比如从文件...【详细内容】
2023-11-26  Search: .NET  点击:(189)  评论:(0)  加入收藏
▌简易百科推荐
.Net开发中十种常见的内存错误以及相应的解决方案
在.Net开发中,为内存管理方面提供了许多便利,但仍然存在一些常见的错误和陷阱。这些错误可能导致内存泄漏、性能下降、异常抛出等问题,严重影响应用程序的稳定性和性能。在软件...【详细内容】
2024-03-26  小乖兽技术  今日头条  Tags:.Net   点击:(12)  评论:(0)  加入收藏
.NET配置文件大揭秘:轻松读取JSON、XML、INI和环境变量
概述:.NET中的IConfiguration接口提供了一种多源读取配置信息的灵活机制,包括JSON、XML、INI文件和环境变量。通过示例,清晰演示了从这些不同源中读取配置的方法,使配置获取变得...【详细内容】
2023-12-28  架构师老卢  今日头条  Tags:.NET   点击:(92)  评论:(0)  加入收藏
.Net开发都应当掌握的泛型基础知识集合
在C#编程语言中,泛型是一项非常强大和重要的功能。它允许我们编写更加灵活和通用的代码,同时提高代码的可重用性和性能。本文将介绍C#泛型的一些关键知识点,帮助读者理解和应用...【详细内容】
2023-12-25  小乖兽技术  今日头条  Tags:.Net   点击:(123)  评论:(0)  加入收藏
作为 .NET 开发人员,我为什么开始使用 Python?
作者 | Alex Maher编译 | 小欧作为一名 .NET 开发人员,很长一段时间以来,我一直关注 C# 和 .NET 的出色工具和功能。但我最近开始使用 Python,感觉非常棒。这里申明一点,这篇文...【详细内容】
2023-12-25    51CTO  Tags:.NET   点击:(142)  评论:(0)  加入收藏
.NET Core 3.1 升级到 .NET 8,看看都有哪些变化
.NET Core 3.1 已经用了很长一段时间,其实在 2022 年的年底微软已经不提供支持了,后面的一个 LTS 版本 .NET 6 也会在 2024 年 11 月终止支持,所以直接升级到 .NET 8 是最好的...【详细内容】
2023-12-08  不止dotNET  微信公众号  Tags:.NET   点击:(191)  评论:(0)  加入收藏
.NET Core的中间件来对Web API进行流量限制实现方法
在.NET Core中,我们可以使用ASP.NET Core的中间件来对Web API进行流量限制。ASP.NET Core提供了一个名为RateLimit的开源库,可以方便地实现流量限制功能。下面将详细介绍如何...【详细内容】
2023-12-06  架构师老卢  今日头条  Tags:.NET   点击:(175)  评论:(0)  加入收藏
微软官方出品微服务架构:十个.Net开源项目
1、一个高性能类型安全的.NET枚举实用开源库Enums.NET是一个.NET枚举实用程序库,专注于为枚举提供丰富的操作方法。它支持.NET Framework和.Net Core。它主要优点表现在类型...【详细内容】
2023-12-06  编程乐趣  今日头条  Tags:.Net   点击:(130)  评论:(0)  加入收藏
.NET开源的处理分布式事务的解决方案
前言在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战。今天给大家推荐一个.NET开源的处理分布式事务...【详细内容】
2023-11-30  追逐时光者  微信公众号  Tags:.NET   点击:(173)  评论:(0)  加入收藏
深入 .NET 异步编程:Task 与 ValueTask 的区别与选择
在 .NET 中,Task 和 ValueTask 都是用于表示异步操作的类型,但它们有一些重要的区别。TaskTask 是最常见的表示异步操作的类型。它通常用于表示耗时的、异步的操作,比如从文件...【详细内容】
2023-11-26  架构师老卢  微信公众号  Tags: .NET   点击:(189)  评论:(0)  加入收藏
.NET字符串存储:解析常量与动态字符串,深入了解内存机制
在 .NET 中,字符串是不可变的,这意味着一旦创建,字符串的内容就不能被修改。字符串在内存中以不同的方式存储,具体取决于它是常量字符串还是动态创建的字符串。常量字符串常量字...【详细内容】
2023-11-25  架构师老卢  微信公众号  Tags:.NET   点击:(191)  评论:(0)  加入收藏
站内最新
站内热门
站内头条