我试图在我的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 }
首先,
"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");