无法创建“System.String”类型的实例
Posted
技术标签:
【中文标题】无法创建“System.String”类型的实例【英文标题】:Cannot create instance of type '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;
?
哦...你说得对,我错过了。但其余属性已正确绑定
:
不能存在于键名中的任何位置。
【参考方案1】:
你的问题是在 Json 中有额外的冒号“:”,这就是它给出错误的原因
有效的 Json 数据。
"Jwt":
"issuer": "localhost:5000",
"expiryMinutes": 60,
"key": "das#@4SD120847@12313"
,
"Mongo":
"connection": "mongodb://localhost:27017",
"database": "MemoTime"
【讨论】:
你是对的。现在它起作用了。我怎么会错过它……?谢谢:) 这是一个什么样的项目?我尝试了 .NET 核心控制台应用程序并添加了Microsoft.Extensions.Configuration
和 Microsoft.Extensions.Configuration.Json
但发生错误:'IConfigurationSection' 不包含“Get”的定义,并且没有扩展方法“Get”接受“IConfigurationSection”类型的第一个参数' 可以找到.
这个 asp.net 核心网络应用程序
谢谢。我发现它是一个 ASP.NET MVC 项目。一个空的 ASP.NET 核心 Web 应用程序仍然无法找出 Get<T>
方法。这个方法其实是在Microsoft.Extensions.Configuration.ConfigurationBinder
Microsoft.Extensions.Configuration.Binder.dll
中声明的。
查看该项目中的启动类,您可以看到 ConfigureServices 方法,我们将在其中编写用于从 appsettings.json 文件读取数据的代码以上是关于无法创建“System.String”类型的实例的主要内容,如果未能解决你的问题,请参考以下文章
无法将类型为“System.DateTime”的对象强制转换为类型“System.String”
无法将对象类型“System.String[*]”转换为“System.String[]”
Microsoft.Data.SqlClient.SqlBuffer 无法将“System.String”类型的对象转换为“System.Guid”类型
无法在 DataReader.GetString() 中将“System.Int32”类型的对象转换为“System.String”类型
无法将类型“System.String”的对象转换为类型“System.Byte []”错误 MYSQL NET CORE 3.1