问题描述
首先,
"Data": {
"ConnectionStrings": {
"DefaultConnection": "Data Source=server;Initial Catalog=dbase;Trusted_Connection=True;MultipleActiveResultSets=true"},
}
与在Visual Studio中添加“ Asp.NET配置文件”时所获得的结构略有不同。当您这样做时,您会得到
"ConnectionStrings": {
"DefaultConnection": "Data Source=server;Initial Catalog=dbase;Trusted_Connection=True;MultipleActiveResultSets=true"},
没有“数据” JavaScript对象。这就是扩展方法不起作用的原因。它期望这种结构。无论如何,您都可以使用此结构(带有“ Data”的结构),并按以下方式获取连接字符串:
var connectionString = Configuration["Data:ConnectionStrings:DefaultConnection"];
请注意,您正在使用:
而不是来浏览JavaScript对象树.
。这是由于使用时存在一些跨平台问题.
。
如果您删除“数据”:{},则可以执行以下操作:
var connectionString = Configuration["ConnectionStrings:DefaultConnection"];
现在,扩展方法将起作用。在Microsoft扩展程序的下面与上面的代码相同。
var config2 = Configuration.GetConnectionString("DefaultConnection");
解决方法
我试图在我的appsettings.json文件中写入连接字符串,并将其带入我的启动文件中,但我不断得到一个Value不能为null。参数名称:connectionString。我一直在使用各种示例,但似乎看不到带有ASP.NET
1.0 Core启动类的新设置。
Appsetting.json文件:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Data Source=server;Initial Catalog=dbase;Trusted_Connection=True;MultipleActiveResultSets=true"
},"Logging": {
"IncludeScopes": false,"LogLevel": {
"Default": "Debug","System": "Information","Microsoft": "Information"
}
}
}
}
尝试Startup.cs的方法
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();
}
public void ConfigureServices(IServiceCollection services)
{
var connStr = Configuration.GetConnectionString("DefaultConnection");
System.Console.WriteLine(connStr);
services.AddDbContext<DbContext>(options => options.UseSqlServer(connStr)); //error right here -- Null value
}