无法创建类型为'System.String'的实例

bie*_*000 2 c# json asp.net-core

我尝试从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
Run Code Online (Sandbox Code Playgroud)

appsettings.json

  "Jwt": {
    "issuer" : "localhost:5000",
    "expiryMinutes" : 60,
    "key" : "das#@4SD120847@12313"
  },
  "Mongo": {
    "connection:" : "mongodb://localhost:27017",
    "database" : "MemoTime"
  }
Run Code Online (Sandbox Code Playgroud)

MongoSettings:

public class MongoSettings
{
    public string Connection { get; set; }
    public string Database { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

JwtSettings:

public class JwtSettings
{
    public string Key { get; set; }
    public string ValidIssuer { get; set; }
    public int ExpiryMinutes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,应用程序设置中的分类和部分看起来都相似,因此为什么无法获得mongo的设置?

Sai*_*war 5

您的问题在Json中有多余的冒号“:”,这说明它为什么会出错

有效的Json数据。

"Jwt": 
  {
    "issuer": "localhost:5000",
    "expiryMinutes": 60,
    "key": "das#@4SD120847@12313"
  },
  "Mongo": 
  {
    "connection": "mongodb://localhost:27017",
    "database": "MemoTime"
  }
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明