【问题标题】: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 的功能。

标签: c# asp.net .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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多