我正在创建一个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;
}
答案 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");