MongoDB C#驱动程序异常消息=元素''与

时间:2015-08-12 09:34:30

标签: c# mongodb

问题是拼写错误 RequiresAuthenticationFlagRequiresAuthentication

我不明白为什么驱动程序在异常中包含变量的名称。

因此,如果可能的话,我会稍微改变一下这个问题。 为什么驱动程序不在异常中包含元素名称?

当我删除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; }
}

0 个答案:

没有答案