我有两个项目,一个1.1.0 ASP.NET Core项目和一个4.5.2项目的引用。
我想从appsettings.json文件中获取值到我的4.5.2项目。 appsettings.json文件位于核心项目中。
从我的4.5.2项目中尝试了这一点但没有运气:
var mailServer = ConfigurationManager.AppSettings["MailServer"];
如何访问4.5.2项目中的值?
答案 0 :(得分:5)
ConfigurationManager
适用于基于XML的配置文件specific format,并且不知道如何读取自定义JSON文件。
因为您也使用appsettings.json
作为ASP.NET Core项目,您可以使用" .NET Core方法添加Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json包的依赖项并读取设置#34;:
var builder = new ConfigurationBuilder()
.AddJsonFile(@"<path to appsettings.json>");
var configuration = builder.Build();
// configuration["MailServer"]
当然,由于appsettings.json
是一个简单的JSON文件,您可以使用任何JSON提供程序直接反序列化。
答案 1 :(得分:0)
这是什么?
using (var reader = new StreamReader(Directory.GetCurrentDirectory() + "/appsettings.json"))
Settings = JsonConvert.DeserializeObject<Settings>(reader.ReadToEnd());
答案 2 :(得分:0)
“约翰·麦地那(Johann Medina)” 做得很好,但是您忘了解释一下您的解决方案,以便人们可以更好地理解这个想法。我已经以相同的方式完成了操作,但是这里是为了以这种方式使用它的完整说明...
appsetting.JSON示例:
{
"Email": {
"Host": "smtp.office365.com",
"Port": "587",
"From": "user@domain.com",
"Username": "user@domain.com",
"Password": "IsAAbbUaa22YTHayTJKv44Zfl18BClvpAC33Dn5p4s="
}
}
POCO类示例:
namespace AppSettingsTest
{
public class AppSettings
{
public Email Email { get; set; }
}
public class Email
{
public string Host { get; set; }
public int Port { get; set; }
public string From { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
}
获取appsetting.JSON内容示例:
using (var reader = new StreamReader(Directory.GetCurrentDirectory() + "/appsettings.json")) {
var appSettings = JsonConvert.DeserializeObject<AppSettings>(reader.ReadToEnd());
}
注意:只需确保在属性选项“复制到输出目录”中将“始终复制”设置为JSON文件。
快乐编码!