从 .NET Core 2 中的类中读取 appsettings.json

Posted

技术标签:

【中文标题】从 .NET Core 2 中的类中读取 appsettings.json【英文标题】:Read appsettings.json from a class in .NET Core 2 【发布时间】:2018-05-05 08:31:10 【问题描述】:

我需要从业务类中的appsettings.json 文件(部分:placeto)中读取属性列表,但我无法访问它们。我需要公开这些属性。

我将文件添加到Program 类中:

这是我的appsettings.json


  "Logging": 
    "IncludeScopes": false,
    "LogLevel": 
      "Default": "Warning"
    
  ,
  "placeto": 
    "login": "fsdfsdfsfddfdfdfdf",
    "trankey": "sdfsdfsdfsdfsdf"
  

【问题讨论】:

***.com/questions/46632090/…的可能重复 这个来自 MS 的文档解释了它如何 => docs.microsoft.com/en-us/aspnet/core/fundamentals/… 但我需要在自定义类中阅读,示例在控制器中,我尝试了几个选项。在 .Net 标准中使用 `string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"];` 来读取 web.config,在 .Net 核心中相当于 @CodeNotFound 我链接你的答案展示了如何在课堂上使用appsettings.json。在这种情况下是LocalMailService,但它可以是你想要的任何东西。 【参考方案1】:

首先:使用program.cs 中的默认值,因为它已经添加了配置:

public class Program

    public static void Main(string[] args)
    
        BuildWebHost(args).Run();
    

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();

第二:为您的类创建一个接口,并通过创建Iconfiguration 字段通过依赖注入传递配置:

private readonly IConfiguration Configuration;

然后由构造函数传递:

public Test(IConfiguration configuration)

    Configuration = configuration;

然后为您的类创建一个接口,以便正确使用Dependency Injection。然后可以创建它的实例,而无需将IConfiguration 传递给它。

这是类和接口:

using Microsoft.Extensions.Configuration;

namespace GetUserIdAsyncNullExample

    public interface ITest  void Method(); 

    public class Test : ITest
    
        public Test(IConfiguration configuration)
        
            Configuration = configuration;
        

        private readonly IConfiguration Configuration;
        public void Method()
        
            string here = Configuration["placeto:login"];
        
    

第三:然后在你的 startup.cs 中通过调用为你的类实现依赖注入:

services.AddSingleton< ITest, Test>();

在您的 ConfigureServices 方法中

现在您也可以将您的类实例传递给依赖注入使用的任何类。


例如,如果您有 ExampleController 并希望在其中使用您的课程,请执行以下操作:

 private readonly ITest _test;

 public ExampleController(ITest test) 
 
     _test = test;          
  

现在你有 _test 实例可以在你的控制器的任何地方访问它。

【讨论】:

以上是关于从 .NET Core 2 中的类中读取 appsettings.json的主要内容,如果未能解决你的问题,请参考以下文章

如何在启动类中读取应用程序 URL,特别是在 .net core 3.1 中的“ConfigureService”方法中?

在 .NET Core 测试项目中读取 appsettings json 值

将 HttpContext 注入到一个类中,并在 .net core 中调用控制器外的类

如何在.Net Core 2.0 App中读取appsettings.json

在模块类中找到重复的类 android.support.v4.app.INotificationSideChannel?

从.Net Core 2.0 Web应用程序中的apppsettings.json文件中读取值[重复]