10

Web APIをテストするためにFiddlerを使用しているMVC 6プロジェクトがあります。 EntityFramework 7を使用してリストを返す次のコントローラアクションを実行するとします。その後、htmlはうまく表示されます。JSONを返すASP.NET MVC 6コントローラを取得する

​​

しかし、私は代わりにJsonの応答を返そうとすると502エラーが発生します。

[HttpGet("/")] 
public JsonResult Index() 
{ 
    var model = orderRepository.GetAll(); 

    return Json(model); 
} 

なぜオブジェクトがjsonに正しくシリアル化されていないかに関するアイデアはありますか?

+0

Fiddlerからのリクエストと応答のネットワークデータを追加できますか? – user700390

+0

あなたは502を取得しているので、サーバー側にエラーがあります。だからプロジェクトをデバッグし、ログを見てください。 – poke

+0

502と言います。Bad Gateway HTTP/1.1 502 Bad Gateway キャッシュコントロール:プライベート コンテンツタイプ:text/html;文字セット= UTF-8 サーバー:ケストレル X-、ソースファイル:????= UTF-8 B WjpcRG9jdW1lbnRzXFZpc3VhbCBTdHVkaW8gMjAxNVxQcm9qZWN0c1xKZW5Tb2xvXHNyY1xKZW5Tb2xvXHd3d3Jvb3Q = = X-パワード・バイ:ASP.NET 日:土、2016年1月16日午後11時16分58秒GMT Content-Length:4939 @poke – Dblock247

答えて

20

まず、JsonResultではなく返信タイプとしてIEnumerable<Order>またはIEnumerable<object>を使用し、ちょうどorderRepository.GetAll()を返すことができます。追加情報についてはthe article frをお読みください。

Bad Gatewayで別のエラーが発生しました。 package.jsonに依存関係に最新バージョン8.0.2にNewtonsoft.Jsonを追加しようと1つのエラー「HTTPエラー502.3 - 不正なゲートウェイ」再現できところで

services.AddMvc() 
    .AddJsonOptions(options => { 
     options.SerializerSettings.ReferenceLoopHandling = 
      Newtonsoft.Json.ReferenceLoopHandling.Ignore; 
    }); 

に使用を使用するように、私はちょうど設定した場合、あなたは説明作業コードのreturn文にブレークポイントを設定し、十分に待ってください。したがって、多くの一般的なエラーで、すぐにエラー "HTTP Error 502.3 - Bad Gateway"が表示されます。

さらに便利なシリアライゼーションオプションを検討することができます。たとえば、

services.AddMvc() 
    .AddJsonOptions(options => { 
     // handle loops correctly 
     options.SerializerSettings.ReferenceLoopHandling = 
      Newtonsoft.Json.ReferenceLoopHandling.Ignore; 

     // use standard name conversion of properties 
     options.SerializerSettings.ContractResolver = 
      new CamelCasePropertyNamesContractResolver(); 

     // include $id property in the output 
     options.SerializerSettings.PreserveReferencesHandling = 
      PreserveReferencesHandling.Objects; 
    }); 
+0

ありがとうございました。 xmlのオプションもありますか? – Dblock247

+1

@ Dblock247:MVCは通常XMLデータを返しません。この設定は、ASP.NET 5のデフォルトのJSONシリアライザである 'Newtonsoft.Json'の特定の設定です。 – Oleg

+0

ありがとうございます。 XMLシリアライザをお勧めできますか? – Dblock247

関連する問題