.NET Core类库中读取配置文件

简介: 最近在开发基于.NET Core的NuGet包,遇到一个问题:.NET Core中已经没有ConfigurationManager类,在类库中无法像.NET Framework那样读取App.config或Web.config(.NET Core中是appsetings.json)文件中的数据。

最近在开发基于.NET Core的NuGet包,遇到一个问题:
.NET Core中已经没有ConfigurationManager类,在类库中无法像.NET Framework那样读取App.configWeb.config(.NET Core中是appsetings.json)文件中的数据。

但,我们可以自己写少量代码来实现在类库中读取配置文件信息。

思路:

先在当前目录下寻找appsettings.json文件

  • 若存在,则读取改文件中的配置信息
  • 不存在,则到根目录中寻找appsettings.json文件

具体做法如下:

  1. 使用NuGet安装Microsoft.Extensions.Configuration.Json

  2. 实现代码

public static class ConfigHelper
{
    private static IConfiguration _configuration;

    static ConfigHelper()
    {
        //在当前目录或者根目录中寻找appsettings.json文件
        var fileName = "appsettings.json";

        var directory = AppContext.BaseDirectory;
        directory = directory.Replace("\\", "/");

        var filePath = $"{directory}/{fileName}";
        if (!File.Exists(filePath))
        {
            var length = directory.IndexOf("/bin");
            filePath = $"{directory.Substring(0, length)}/{fileName}";
        }

        var builder = new ConfigurationBuilder()
            .AddJsonFile(filePath, false, true);

        _configuration = builder.Build();
    }

    public static string GetSectionValue(string key)
    {
        return _configuration.GetSection(key).Value;
    }
}

 

测试

在根目录下或当前目录下添加appsetting.json文件,并添加节点:

{
  "key": "value"
}

测试代码如下:

public class ConfigHelperTest
{
    [Fact]
    public void GetSectionValueTest()
    {
        var value = ConfigHelper.GetSectionValue("key");
        Assert.Equal(value, "value");
    }
}

 

测试通过:

 

 
 

顺道安利下一款用于.NET开发的跨平台IDE——Rider,以上代码均在Rider中编写。

这是NuGet包项目地址:https://github.com/CwjXFH/WJChiLibraries,希望大家多多指点。

相关阅读

Configure an ASP.NET Core App

版权声明

本文为作者原创,版权归作者雪飞鸿所有。 转载必须保留文章的完整性,且在页面明显位置处标明原文链接

如有问题, 请发送邮件和作者联系。

目录
相关文章
|
1月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
52 5
|
27天前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
66 12
|
28天前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
52 1
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
57 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
1月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
37 3
|
2月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
49 3
|
3月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」
|
开发框架 前端开发 中间件
ASP.NET Core 核心特性学习笔记「上」
ASP.NET Core 核心特性学习笔记「上」
|
SQL 机器学习/深度学习 Cloud Native
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
- 状态 - 自动变更检测 - 不查询删除和更新 - 并发
257 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记