ConfigurationManager 是不是与 ASP.NET 核心的 appsettings.json 一起使用?

Posted

技术标签:

【中文标题】ConfigurationManager 是不是与 ASP.NET 核心的 appsettings.json 一起使用?【英文标题】:Does ConfigurationManager work with ASP.NET core's appsettings.json?ConfigurationManager 是否与 ASP.NET 核心的 appsettings.json 一起使用? 【发布时间】:2019-03-28 09:19:33 【问题描述】:

我有一个 .NET Standard 库,其中包含我所有的 SQL 相关代码。它甚至包含一些创建 SQL 连接的代码。该库需要从应用程序配置文件中读取以获取 SQL 连接字符串。该库使用典型的ConfigurationManager.ConnectionStrings 方法。

现在,我在 .NET Core ASP.NET Web Api 2 应用程序中使用这个库。我在这个应用程序的appsettings.json 文件中定义了我的连接字符串。连接字符串位于 ConnectionStrings 字段中,其给定名称与我的 DLL 从上面查找的名称相匹配。

这似乎不起作用。我的 DLL,从顶部开始,没有从配置文件中找到连接字符串。

ConfigurationManager 不能与appsettings.json 一起使用吗?如果不是,我应该如何处理?

【问题讨论】:

正确,ConfigurationManager 仅用于处理基于 XML 的 web.configapp.config 文件(请注意 WebConfigurationManager 在 ASP.NET Core 中无论如何都不可用)。它们不支持基于 JSON 的 appSettings.json 文件。为此,您必须使用 ASP.NET Core 的功能。 How to read AppSettings values from Config.json in ASP.NET Core的可能重复 【参考方案1】:

ConfigurationManager 不适用于 appsettings.json,您必须使用 ConfigurationBuilder 类代替 ConfigurationManager 在 startup.cs 文件中添加 json 文件。

1.将以下代码放入appsettings.json

"ConnectionStrings": 
 "connectionstring ": "Data Source=Demo_server\\SQLEXPRESS01;Initial Catalog=Demo_DB;Persist Security Info=True; User ID=sa;Password=Password@123" 

2.将以下代码放入startup.cs。

 public Startup(IHostingEnvironment env)
    
         Configuration = new ConfigurationBuilder().AddJsonFile("appSettings.json").Build();             
    

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
                
       ConnectionString = Configuration["ConnectionStrings:connectionstring"]; // Get Connection String from Appsetting.json
    

3.创建 ConnectionStringUtility 类,用于从 Startup.cs 文件中获取连接字符串。

public class ConnectionStringUtility
 
  public static string GetConnectionString()
   
    return Startup.ConnectionString; 
   

4.在连接变量中获取连接字符串,并在任何你想要的地方使用这个连接字符串。

public string Connectionstring = ConnectionStringUtility.GetConnectionString();

【讨论】:

以上是关于ConfigurationManager 是不是与 ASP.NET 核心的 appsettings.json 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

ConfigurationManager 返回 null 而不是字符串值

在没有 ConfigurationManager 和 Web.config 的情况下使用 PayPal .NET SDK

.Net Core 2.0 appsettings 与 .net 完整框架使用 ConfigurationManager

使用 ConfigurationManager 将用户值存储在与应用配置不同的文件中

.NET 6 中的 ConfigurationManager

.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨