10

döndürmesine izin veriliyor Web API'sini test etmek için Fiddler'ı kullandığım bir MVC 6 projem var. Bir Listeye geri dönmek için EntityFramework 7'yi kullanan aşağıdaki denetleyici eylemini kullanırsam. Sonra html iyi hale gelir.ASP.NET MVC 6 Denetleyicisi'nin JSON

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

    return View(model); 
} 

Ancak bir Json yanıtı döndürmeye çalıştığımda bunun yerine 502 hatası alıyorum.

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

    return Json(model); 
} 

Nesnenin neden doğru şekilde json'a dönüştürüldüğüne dair herhangi bir fikir doğru mu? Her şeyden

+0

Fiddler tarafından istek ve yanıtın bazı ağ verilerini ekleyebilir misiniz? – user700390

+0

Bir 502 aldığınızdan, sunucu tarafında bir hata var. Bu yüzden projeyi ayıklayın ve günlüklere bakın. – poke

+0

diyor 502 Bozuk Ağ Geçidi HTTP/1.1 502 Bozuk Ağ Geçidi Önbellek Denetimi: özel İçerik-Türü: text/html; charset = utf-8 Sunucu: Kestrel X-Kaynak Kodlarını: = UTF-8 B WjpcRG9jdW1lbnRzXFZpc3VhbCBTdHVkaW8gMjAxNVxQcm9qZWN0c1xKZW5Tb2xvXHNyY1xKZW5Tb2xvXHd3d3Jvb3Q = = X-Powered-By:???? ASP.NET Tarihi: Cts, 16 Ocak 2016 23:16:58 GMT İçerik Uzunluğu: 4939 @poke – Dblock247

cevap

20

İlk yerine JsonResult dönüş türü olarak IEnumerable<Order> veya IEnumerable<object> kullanmak ve sadece orderRepository.GetAll() dönebilirsiniz. the article ek bilgilerini okumanızı tavsiye ederim.

Hatalı Ağ Geçidi ile ilgili başka bir hata hakkında. package.json yılında bağımlılıkları için son sürümü 8.0.2 de Newtonsoft.Json eklemeyi deneyin ve bir hata üretebileceği arada kullanılması

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

kullanmak "HTTP Hatası 502.3 - Hatalı Ağ Geçidi" Ben sadece ayarlarsanız, sen tanımlayan Çalışma kodunun iade beyanında kesme noktası ve yeterince uzun süre bekleyin. Böylelikle birçok hatada çok yakında "HTTP Hatası 502.3 - Bozuk Ağ Geçidi" hatasını göreceksiniz.

Bize daha fazla yardımcı serileştirme seçeneği önerebilirsiniz. Örneğin,

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

Çalıştığınız için teşekkür ederiz. Xml için seçenekler var mı? – Dblock247

+1

@ Dblock247: MVC, genellikle XML verilerini döndürmez. Ayarlar, ASP.NET 5'te varsayılan JSON serializer olan "Newtonsoft.Json" un belirli ayarlarıdır. – Oleg

+0

Bilgi için teşekkür ederiz. XML Serializer'ı önerebilir misiniz? – Dblock247

İlgili konular