当前位置: 首页 > 面试题库 >

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

闾丘博
2023-03-14
问题内容

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


 类似资料:
  • 我做了一个自动加载用户设置xml文件的程序,但一个问题是,当我在代码中添加新值时,程序试图读取没有“data5”值的xml文件时,程序返回一个错误: 当我关闭程序时,我得到了另一个关于另一个进程使用的文件的错误 我不明白为什么文件仍然被锁定。它应该在之后关闭。我试图让程序在读取xml之前创建一个新的xml值,但这不是一个好主意,因为它将替换修改后的值。这是我的密码

  • 为了将位图转换为base64,我必须将位图转换为图像。当我将图像转换为时,在从屏幕拍摄位图(如或)转换图像后,我会得到这条消息,但当我使用本地存储的图像(如)时,它工作得很好。当我不想存储屏幕截图并每次都读一遍这是我尝试过的代码时,我该如何避免这个错误呢

  • 我有一个简单的点网移动应用程序,具有自定义身份验证,如下示例:(https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-dotnet-backend-how-to-use-server-sdk#custom-认证) 我有一个生成JWT令牌的endpointhttps://test2ixresearch

  • 我只是用MVVM轻型工具包编写一些培训窗口项目。当MVVM Light引用添加到项目中时,下面的资源被自动添加到app.xml中 不幸的是,它不起作用,即由于以下错误,无法构建/编译项目: 我找到了几种针对此问题的常见解决方案(例如:更改解决方案平台、清理、重建、重新启动Visual Studio等),但它们并没有改变什么。创建一个新项目也没有帮助。 有没有其他办法让它起作用?我使用Visual

  • 问题内容: 这已经发布过,但是我的问题有点不同。这是有问题的JPQL查询: 现在我确实尝试做: 但这给了我一个警告: 执行查询的方法是: 忠告? ------------ UPDATE ---------------- 这似乎解决了这个问题: 但是现在我得到一个错误,说: ShopOrder: 问题答案: 而不是使用:po.id =:id而是使用?1 ....

  • 问题内容: 我正在尝试进行设置,以便将表名作为参数传递给命令文本,但是我无法使其正常工作。我四处张望,发现了这样的问题:使用C#进行MySQL的参数化查询,但是我没有任何运气。 这是相关的代码(connection == 包含连接字符串): 如果我更改: 至: 作为一种测试方法,它是可行的(我正在将XML从数据集中写入控制台以进行检查)。因此,我很确定问题只是以错误的方式使用了参数功能。有指针吗?