2017-09-22 10 views
0

私はStartup.cs内のコード以下、それはデフォルトのシリアライズオプションを上書きするために期待してきた期待通りに動作していません。私はそれが私のASPネットコア2.0プロジェクト全体のすべてのシリアライゼーションをオーバーライドしたいが、正しくないアクションの戻り値は、私はこのグローバルプロパティがコア2.0で動作していないと思う。設定JsonConvert.DefaultSettings ASPネットコア2.0は

私はそれを書かれているUseMvc();

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

答えて

1

それはしかし、Global.asaxのあなたのApplication_Start()内側に以下のコードを追加してみて、それがうまくいくかどうかを確認し、指定されたメソッドのOPを使用していないので、これは、部分的な答えです。

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

これまでGithubでこの問題が発生していましたが、シリアライザにグローバル設定を適用すると、上のようになりました。 SerializerSettingsプロパティには変更可能なその他の設定が含まれています。誤っていない場合は、変更内容をアプリケーション全体で共有する必要があります。

質問のメソッドについては、release notesからわかるように、この設定を.serialize()メソッド内で渡す必要があります。デフォルトではシリアライザでは使用されません。 Startup.ConfigureServicesアプリケーションにサービスを配線するときASP.NETコア内

+0

私はこのプロジェクトは、ASPネットコア2.0であるので、私は私のプロジェクトで提供されているコードを使用することはできませんと述べました –

1

は、これが構成されています。 AddMvc()拡張子によって返さIMvcBuilderに流暢AddJsonOptions(Action<MvcJsonOptions>)拡張があります。 MvcJsonOptionsは、アクションコードで設定できるプロパティーを公開します(SerializerSettings)。

だからではなく、一度設定するのMVCを登録する前に、それはMVC登録の一環として行われています。あなたのセットアップを組み込む

例:

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()); 
    }); 
関連する問題