.NET Core使用ConfigurationManager.AppSettings消耗标准.NET库

时间:2016-09-15 20:42:01

标签: .net asp.net-core

我有一个标准的.NET 4.5.2库,我已经使用多年了。它依赖于ConfigurationManager.AppSettings,这意味着我必须确保我的app或web.config文件的appSettings部分中有一组特定的设置。无法传递这些值。您必须将它们放在appSettings部分。

我在.NET Core中开始一个新项目但是以Net452为目标,这样我就可以利用一些库(到目前为止工作正常)。

我遇到了这个最新库的问题,因为我无法弄清楚如何正确设置设置,以便ConfigurationManager.AppSettings能够找到它们。

将它们放入appSettings.json似乎不起作用。将它们放在web.config中似乎也不起作用。

这甚至可能吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

是的,它可能是你想要的,但你应该手动(我不知道是否有一个简单的方法)。

假设您在appsettings.json中有一些设置,如下所示:

{
    "AppSettings" : {
        "Setting1": "Setting1 Value"
     }
}

Startup.cs构造函数集ConfigurationManager.AppSettings中,其值为:

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();

        // copy appsetting data into ConfigurationManager.AppSettings
        var appSettings = Configuration.GetSection("AppSettings").GetChildren();
        foreach (var setting in appSettings.AsEnumerable())
        {
            ConfigurationManager.AppSettings[setting.Key] = setting.Value;
        }
    }

在类库中获取价值:

var conStr =  ConfigurationManager.AppSettings["Setting1"].ToString();