ConfigurationManager 是否与 ASP.NET core 的 appsettings.json 一起使用?

Rya*_*yan 5 c# asp.net .net-core

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

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

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

难道ConfigurationManager不是一起工作appsettings.json?如果没有,我应该如何解决这个问题?

Add*_*Ltd 8

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" }
Run Code Online (Sandbox Code Playgroud)

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
    }
Run Code Online (Sandbox Code Playgroud)

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

public class ConnectionStringUtility
{ 
  public static string GetConnectionString()
  { 
    return Startup.ConnectionString; 
  } 
}
Run Code Online (Sandbox Code Playgroud)

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

public string Connectionstring = ConnectionStringUtility.GetConnectionString();
Run Code Online (Sandbox Code Playgroud)