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.config
和 app.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探讨