小编典典

值不能为空。参数名称:starter中的connectionString appsettings.json

json

我试图在我的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
}

阅读 406

收藏
2020-07-27

共1个答案

小编典典

首先,

 "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");
2020-07-27