【问题标题】:Cannot create instance of type 'System.String'无法创建“System.String”类型的实例
【发布时间】:2018-05-25 18:31:34
【问题描述】:

我尝试从 appsettings.json 获取我的部分,然后将其绑定到 MongoSettings 类的实例,但我有一个例外:

“无法创建'System.String'类型的实例,因为它丢失了 一个公共的无参数构造函数。”

很奇怪,因为我是用同样的方法来获取jwt设置的。

请看一下:

    var jwtSettings = Configuration.GetSection("jwt").Get<JwtSettings>(); //it works
    var mongoSettings = Configuration.GetSection("mongo").Get<MongoSettings>(); //it doesn't

appsettings.json

  "Jwt": {
    "issuer" : "localhost:5000",
    "expiryMinutes" : 60,
    "key" : "das#@4SD120847@12313"
  },
  "Mongo": {
    "connection:" : "mongodb://localhost:27017",
    "database" : "MemoTime"
  }

Mongo 设置:

public class MongoSettings
{
    public string Connection { get; set; }
    public string Database { get; set; }
}

Jwt设置:

public class JwtSettings
{
    public string Key { get; set; }
    public string ValidIssuer { get; set; }
    public int ExpiryMinutes { get; set; }
}

如您所见,应用设置中的类和部分看起来相似,那么为什么获取 mongo 的设置不起作用?

【问题讨论】:

  • "issuer" : "localhost:5000", public string ValidIssuer { get; set; } ?
  • 哦...你说得对,我错过了。但其余属性已正确绑定
  • : 不能存在于键名中的任何位置。

标签: c# json asp.net-core


【解决方案1】:

你的问题是在 Json 中有额外的冒号“:”,这就是它给出错误的原因

有效的 Json 数据。

"Jwt": 
  {
    "issuer": "localhost:5000",
    "expiryMinutes": 60,
    "key": "das#@4SD120847@12313"
  },
  "Mongo": 
  {
    "connection": "mongodb://localhost:27017",
    "database": "MemoTime"
  }

【讨论】:

  • 你是对的。现在它起作用了。我怎么会错过它……?谢谢:)
  • 这是一个什么样的项目?我尝试了 .NET 核心控制台应用程序并添加了 Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration.Json 但发生错误:'IConfigurationSection' 不包含“Get”的定义,并且没有扩展方法“Get”接受“IConfigurationSection”类型的第一个参数' 可以找到.
  • 这个 asp.net 核心网络应用程序
  • 谢谢。我发现它是一个 ASP.NET MVC 项目。一个空的 ASP.NET 核心 Web 应用程序仍然无法找出 Get&lt;T&gt; 方法。这个方法其实是在Microsoft.Extensions.Configuration.ConfigurationBinderMicrosoft.Extensions.Configuration.Binder.dll中声明的。
  • 查看该项目中的启动类,您可以看到 ConfigureServices 方法,我们将在其中编写用于从 appsettings.json 文件读取数据的代码
猜你喜欢
  • 2020-02-02
  • 2021-11-15
  • 2021-10-01
  • 1970-01-01
  • 2016-10-04
  • 2021-10-24
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多