JsonConverter 不适用于模型绑定



我得到了以下模型

public class SignDocumentsModel
{
    [JsonProperty(ItemConverterType = typeof(BinaryConverter))]
    public byte[][] Documents { get; set; }
    public bool Detached { get; set; }
}

和控制器代码

[HttpPost]
[Route("{requestId}/sign")]
public Task<IHttpActionResult> SignDocuments([FromUri] Guid requestId, SignDocumentsModel parameters)
{
    return SomeKindOfProcessing(requestGuid, parameters);
}

现在,当我与邮递员一起执行请求时

POST
Content-Type: application/json
{
    "Detached": "true",
    "Documents": [
        "bG9weXN5c3RlbQ=="
    ]
}

我想 Documents 属性应该填充从请求内容中发布的 Base64 字符串解码的字节数组,尽管实际上该属性是空的(如果它在模型中的类型是 List<byte[]>byte[][],在IEnumerable<byte[]>的情况下null(。

为什么在模型绑定期间请求正文反序列化时不调用 JsonConverter?如何修复?

您是否尝试过删除[JsonProperty(ItemConverterType = typeof(BinaryConverter))]

在我的测试设置中,在我删除该属性后,模型成功绑定。

编辑:更多信息...

根据 Json.NET 序列化指南,默认情况下,byte[]将序列化为 base64 字符串。从源代码来看,看起来BinaryConverter应该与System.Data.Linq.BinarySystem.Data.SqlTypes.SqlBinary一起使用 - 而不是byte[]

相关内容

  • 没有找到相关文章

最新更新