问题是拼写错误 RequiresAuthenticationFlag
与RequiresAuthentication
。
我不明白为什么驱动程序不在异常中包含变量的名称。
因此,如果可能的话,我会稍微改变一下这个问题。 为什么驱动程序不在异常中包含元素名称?
当我删除DB变量名称的某些字符时,它不会抛出有意义的异常。
数据库名称:Requires
班级名称:RequiresAuthentication
异常不包含正确的字段名称。
当它是相反的时候。它确实包含一个全名!
(类包含Requires
和数据库RequiresAuthentication
)
我认为这必须是异常处理中的错误?
MongoDB C#驱动程序异常:
Message=Element '' does not match any field or property of class
这是导致异常的我的存储库方法:
public List<TEntity> GetAll()
{
return this.GetAllAsync().GetAwaiter().GetResult();
}
我检查了文档,但它似乎不包含任何空元素。
这是完整的例子&#34;消息&#34;
{"An error occurred while deserializing the Smtp property of class
Example.Data.CustomerInstanceConfig: Element '' does not match any field or
property of class Example.Data.SmtpClientConfiguration."}
这对我来说没有任何意义,因为它实际上是在谈论一个&#39;&#39; (空元素)?所以我假设沟通中出了问题。
有关如何继续调试此消息的任何建议吗?
JSON结构(从MongoChef工具复制):
{
"_id" : ObjectId("55b7899865fabbf5a962fae2"),
"SenderEmailAddress" : "abc",
"CustomerInstanceName" : "abc",
"EmailSignature" : null,
"PhoneNumber" : "+123",
"PasswordCapitalLetters" : false,
"PasswordNumbers" : false,
"PasswordMinLength" : NumberInt(4),
"PasswordSymbols" : false,
"ConfigMaxAgeInvitationCode" : NumberInt(30),
"ConfigMaxAgeForgotPasswordCode" : NumberInt(1),
"Smtp" : {
"Host" : "abc",
"Port" : NumberInt(25),
"Password" : "test",
"RequiresAuthentication" : false,
"test" : "test"
}
}
我在Windows环境中工作:以防万一,对于MongoDB驱动程序或服务器的任何已知错误都很重要。
驾驶员正在谈论的属性Smtp是一个单独的类。
public class CustomerInstanceConfig : EntityBase
{
public CustomerInstanceConfig()
{
PasswordMinLength = 4;
}
public string SenderEmailAddress { get; set; }
public string CustomerInstanceName { get; set; }
public string EmailSignature { get; set; }
public string PhoneNumber { get; set; }
public bool PasswordCapitalLetters { get; set; }
public bool PasswordNumbers { get; set; }
public int PasswordMinLength { get; set; }
public bool PasswordSymbols { get; set; }
public int ConfigMaxAgeForgotPasswordCode { get; set; }
public int ConfigMaxAgeInvitationCode { get; set; }
public SmtpClientConfiguration Smtp { get; set; }
[...]
public class SmtpClientConfiguration
{
public string Host { get; set; }
public int Port { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public bool RequiresAuthenticationFlag { get; set; }
}