IdentityResult无法通过aspnet核心反序列化为模型

时间:2017-07-03 05:43:31

标签: c# json asp.net-mvc serialization asp.net-core

我想在WebApi上使用一些身份方法,比如更改密码。

这是身份结果:

public class IdentityResult
{
    public IdentityResult();
    public static IdentityResult Success { get; }
    public bool Succeeded { get; protected set; }
    public IEnumerable<IdentityError> Errors { get; }
    public static IdentityResult Failed(params IdentityError[] errors);
    public override string ToString();
}

如果它在Ok()ActionResult上使用,则会出现错误,因为它有ReferenceLoop。出于这个原因,我创建了一个自定义的IdentityResult:

public class CustomIdentityResult
{
    public bool Succeeded { get; protected set; }
    public List<IdentityError> Errors { get; }
}

并发送如下实际操作结果:

        var model = await _userManager.ChangePasswordAsync(user, currentPassword, newPassword);
        var result = JsonConvert.SerializeObject(model, Formatting.Indented,
        new JsonSerializerSettings()
        {
            ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
        });

        return Ok(result);

它返回一个这样的字符串:

"{\n  \"Succeeded\": true,\n  \"Errors\": []\n}"

但是在反序列化这个字符串之后:

var data = JsonConvert.DeserializeObject<CustomIdentityResult>(response.Content);

它返回Succeeded = false和errors = null。 即使我有一些错误并且Succeeded = false,它也会返回Succeeded = false和errors = null。

反序列化问题在哪里?

感谢。

0 个答案:

没有答案