从类库访问到vNext中的appsetting.json或config.json

时间:2015-12-14 08:56:40

标签: c# asp.net-core

我正在创建一个Nuget包,我正在我的类库中工作。我需要访问 appsetting.json config.json 才能访问默认连接字符串。

将实际工作代码迁移到新版本的ASP.NET vNext的最佳方法是什么?

我已经在this question中读到了它,但对我来说这是一个很好的解决方案。

工作代码:

/// <summary>
/// Retrieves the default connectionstring from the App.config or Web.config file.
/// </summary>
/// <returns>Returns the default connectionstring from the App.config or Web.config file.</returns>
public static string GetDefaultConnectionString()
{
    return ConfigurationManager.ConnectionStrings[DefaultConnectionstringName].ConnectionString;
}

1 个答案:

答案 0 :(得分:5)

旧类库使用app.config自动读取配置值。在新的类库中,您必须添加此功能。 Startup.cs用于读取app.settings在类库中,您还必须添加Startup.cs。

project.json中确保您拥有依赖

"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final"

通过appsettings.json添加add - new item。过滤json

{
  "Data": {
    "MyDb": {
        "ConnectionString": "Server=.;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
  }
}

您可以调用您的连接MyDb或DefaultConnection。

添加Startup.cs以将代码设置为阅读appsettings.json

请参阅下面的Startup构造函数方法。

e.g。

using Microsoft.Data.Entity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;



namespace MyProject
{
    public class Startup
    {
        public IConfigurationRoot Configuration { get; set; }

        public Startup()
        {
            var builder = new ConfigurationBuilder()
             .AddJsonFile("appsettings.json");

            Configuration = builder.Build();
        }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFramework()
                .AddSqlServer()
                .AddDbContext<MyDbContext>(options =>
                    options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"]));
        }
    }
}

在上面的例子中参考

Configuration["Data:MyDb:ConnectionString]

将返回一种IConfigurationRoot,而不是字符串。

要获取字符串值,请尝试以下

string connection = Configuration.Get<string>("Data:MyDb:ConnectionString");