2016-08-16 6 views
3

Ich habe einen einfachen benutzerdefinierten JsonConverter - Code unten - erstellt, um einfach die Fehlermeldung zu ändern, die generiert wird, wenn ein ungültiges Datum überschritten wird.Benutzerdefinierter JsonConverter wird bei der Bereitstellung ignoriert

Dies wird in einer ASP.Net MVC-Site und ASP.Net-Web-API für Ajax-Aufrufe verwendet.

Ich poste ein DTO (Teilcode unten) über Ajax. Wenn ich das in meiner lokalen Umgebung mache, funktioniert alles wie es soll; Wenn das Datum ungültig ist, erhalte ich eine ungültige Anfrage mit der korrekten Fehlermeldung

Wenn ich dies auf einem Produktionsserver veröffentliche, wird es total ignoriert und ich erhalte die Standardmodellliste von Fehlern.

Ich habe meine web.config und Newtonsoft Versionen verifiziert; Sie sind lokal und auf dem Server identisch.

Warum sollte der Konverter bei der Produktion ignoriert werden?

Converter ist:

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)); 
    } 
} 

ich es in meinem DTO bin mit wie:

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

Ich glaube nicht, dass alle Versionen von asp.net-mvc Json.NET für Modellbindung verwenden. Siehe zum Beispiel [Wie kann ich JSON.NET als Modellbinder für ASP.NET MVC-Controller verwenden?] (Http://stackoverflow.com/questions/20980241/how-do-i-sub-in-json-net- as-model-binder-für-asp-net-mvc-controller). – dbc

+0

Meine Bereitstellung enthält die .net-Bibliotheken. AFAIK Sie müssen nicht "MVC" speziell auf dem Server installieren – Darren

Antwort

0

Produktionsserver Datumsformat prüfen, die sich von Ihrer Entwicklungsumgebung unterscheiden. So kann es akzeptieren Sie Eingabe Datumsformat als gültig

+0

Nur überprüft. Sie sind gleich. – Darren

Verwandte Themen