如何在.Net核心应用程序中读取web.config文件
我已经创建了一个.Net核心API,并且我引用了一个.Net框架应用程序。所引用的应用程序连接到数据库和它的连接字符串存储在web.config文件:如何在.Net核心应用程序中读取web.config文件
string CONNSTR =ConfigurationManager.ConnectionStrings["SHOPPINGCNN"].ConnectionString;
在.NET核心应用程序使用appsettings.json代替web.config文件的。当我运行API并尝试使用引用的应用程序资源时,上面的代码将被触发并返回null,因为.net Core应用程序中不存在web.config文件。什么是解决此问题的最佳解决方案
对于.NET Core应用程序,最好的方法是使用Configuration API。这是一种非常灵活的方式,并且,由于提供商模式,它允许使用不同的来源,不仅可以使用最常见的appsettings.json
文件(通过一种JSON文件的方式可以随机命名):
- 文件格式(INI,JSON和XML)
- 命令行参数
- 环境变量
- 在内存中的.NET对象
- 加密的用户存储Azure的主要跳马
个- 自定义提供商,您安装或创建
现在关于ConfigurationManager
。起初,.NET Core被迫忘了这个类 - 它没有被实现和支持,并且想法是通过提供新的配置API来完全取代它。此外,现实情况是,ASP.NET Core应用程序不再通过IIS托管(IIS现在主要用作反向代理),所以web.config
不再有用了(除非您还需要很少的情况定义特定于IIS配置的参数)。
虽然在提供.NET标准2.0之后,此System.Configuration.ConfigurationManager nuget包可用,并且带回了ConfigurationManager
类。由于在新的.NET Core 2.0中实现了新的compatibility shim,因此变得可能。
关于你的情况下,很难说为什么你有“空”,因为它没有足够的信息:
- 它可能是在web.config中错误部分
- web.config中可能不复制到您的输出/发布文件夹中
我加了 'System.Configuration.ConfigurationManager' 以及Web.config,但仍然无法获取连接字符串。 – Zuhair
in .net core您可以使用ConfigurationBuilder
来阅读appsettings.json文件。
您可以像下面这样实施。
appsettings。JSON样本
{
"option1": "value1_from_json",
"option2": 2,
"ConnectionStrings": {
"YourConnectionString": "............."
}
}
C#代码示例
class YourClass
{
public static IConfigurationRoot Configuration;
public string GetConnectionString()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json");
Configuration = builder.Build();
var connectionString = Configuration["ConnectionStrings:YourConnectionString"];
}
}
我同意你的意见,我们可以在'appsettings.json'中存储连接字符串,但是当你使用'.Net Core'应用程序连接到一个数据库时,但在我的情况下,我引用一个'.Net Framework'应用,它使用 '公共静态字符串CONNSTR = ConfigurationManager.ConnectionStrings [“SHOPPINGCNN”]的ConnectionString;' 在其数据访问类 从而试图在我的'Core'应用上面的代码将要使用的资源从该应用程序被触发并会返回空值,因为'Web.config'文件中没有连接字符串 – Zuhair
@Zhahair在最佳实践中保持连接字符串,您应该尝试将其保存在作为默认配置文件的appsettings.json文件中.net核心 – hasan
我已经解释过了为什么我使用旧式的配置文件。如果你正在引用使用'ConfigurationManager.ConnectionStrings'获取连接字符串的.Net Framework程序集,你会怎么做?它无法使用.Net核心标准获取其连接字符串。你怎么看? – Zuhair
您可以添加一个网络配置 – Shyju
我已经没有,但我没有得到连接字符串 – Zuhair
那就更.NET的核心应用在appsettings.json中存储连接字符串的方法。 – Ignas