2017-09-22 6 views
0

Ich habe folgenden Code innerhalb von Startup.cs und erwartet, dass es Standard-Serialisierungsoptionen überschreiben. Ich möchte, dass es jede einzelne Serialisierung in meinem asp net core 2.0-Projekt überschreiben, aber Aktion Rückgabewert, der nicht korrekt ist, denke ich, dass diese globale Eigenschaft nicht im Kern 2.0 funktioniertEinstellung JsonConvert.DefaultSettings ASP Net Core 2.0 funktioniert nicht wie erwartet

Ich habe es in Configure genau vor der App geschrieben. UseMvc(); Diese

JsonConvert.DefaultSettings =() => new JsonSerializerSettings 
      { 
       Formatting = Formatting.Indented, 
       TypeNameHandling = TypeNameHandling.Objects, 
       ContractResolver = new CamelCasePropertyNamesContractResolver(), 
       Converters = new List<JsonConverter> { new StringEnumConverter() } 
      }; 

Antwort

1

ist zum Teil eine Antwort, da sie nicht das Verfahren OP jedoch angegeben verwenden, versuchen Sie den Code unten innerhalb Application_Start() von Ihnen Global.asax und sehen, ob das funktionieren würde.

HttpConfiguration conf= GlobalConfiguration.Configuration; 
conf.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; 

Ich habe diese Frage bereits auf Github gesehen, und ich glaube, die über den Trick tat, wie es Globale Einstellungen auf die Serializer gesetzt werden. SerializerSettings Eigenschaft enthält andere Einstellungen, die geändert werden können, und diese Änderungen sollten über die gesamte Anwendung geteilt werden, wenn ich mich nicht irre.

Wie für die Methode in der Frage, wie ich aus der release notes verstanden habe, müssten Sie diese Einstellungen in der .serialize() - Methode als Standard übergeben sie werden nicht vom Serializer verwendet werden.

+0

habe ich festgestellt, dass dieses Projekt ist asp net Core 2.0, also kann ich nicht den bereitgestellten Code in meinem Projekt verwenden –

1

In ASP.NET Core wird dies konfiguriert, wenn die Dienste für die Anwendung in verdrahtet werden. Es gibt eine fließende AddJsonOptions(Action<MvcJsonOptions>) Erweiterung zu der , die von der AddMvc() Erweiterung zurückgegeben wird. MvcJsonOptions macht eine SerializerSettings Eigenschaft verfügbar, die Sie in Ihrem Aktionscode konfigurieren können.

Also anstatt einmal vor der Registrierung MVC zu konfigurieren, ist es als Teil der MVC-Registrierung getan.

Beispiel enthält das Setup:

services.AddMvc() 
    .AddJsonOptions(options => 
    { 
    options.SerializerSettings.Formatting = Formatting.Indented; 
    options.SerializerSettings.TypeNameHandling = TypeNameHandling.Objects; 
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
    options.SerializerSettings.Converters.Add(new StringEnumConverter()); 
    });