从.NET 4.5.2项目访问appsettings.json

时间:2017-09-05 11:34:43

标签: c# asp.net-core

我有两个项目,一个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项目中的值?

3 个答案:

答案 0 :(得分:5)

ConfigurationManager适用于基于XML的配置文件specific format,并且不知道如何读取自定义JSON文件。

因为您也使用appsettings.json作为ASP.NET Core项目,您可以使用" .NET Core方法添加Microsoft.Extensions.ConfigurationMicrosoft.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文件。

快乐编码!