自定义JsonConverter在部署时被忽略



我已经创建了一个简单的自定义JsonConverter -下面的代码-简单地更改错误消息时产生的无效日期传递。

在ASP中使用。asp.net MVC网站和ASP。. Net Web API用于Ajax调用。

我通过ajax发布了一个DTO(部分代码如下)。当我在本地环境中这样做时,所有功能都应该正常运行;当日期无效时,我收到一个错误的请求以及正确的错误消息

当我将它发布到生产服务器时,它被完全忽略,并且我收到默认的错误ModelState列表。

我已经验证了我的web。config和Newtonsoft版本;它们在本地和服务器上都是一样的。

为什么转换器在生产中会被忽略?

转换器:

public class CustomDateValidationConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return true;
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (string.IsNullOrEmpty(reader.Value.ToString()))
            return null;
        DateTime d;
        DateTime.TryParse(reader.Value.ToString(), out d);
        if (d == null || d == DateTime.MinValue)
            throw new Exception(string.Format("{0} is invalid", reader.Path.AddSpacesBeforeUppercase(true)));
        return d;
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        serializer.Serialize(writer, DateTime.Parse(value as string));
    }
}

我在我的DTO中使用它作为:

.....
    [JsonConverter(typeof(CustomDateValidationConverter))]
    [DateLessThanOrEqual("CreateDateTo", "Create Date From must be on or before Create Date To")]
    public DateTime? CreateDateFrom { get; set; }
.....

检查您的生产服务器日期格式,它可能与您的开发环境不同。所以它可以接受你输入的日期格式为有效的

相关内容

  • 没有找到相关文章

最新更新