No puedo obtener ASP.NET MVC 6 Controller para devolver JSON

asp.net-core-mvc asp.net-web-api c# entity-framework-core json

Pregunta

Tengo un proyecto MVC 6 en el que estoy usando Fiddler para probar la API web. Si realizo la siguiente acción del controlador que utiliza EntityFramework 7 para devolver una lista. Entonces el html se procesará bien.

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

    return View(model);
}

Pero cuando intento devolver una respuesta de Json, obtengo un error 502.

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

    return View(model);
}

¿Alguna idea sobre por qué el objeto no se serializa correctamente en json?

Respuesta aceptada

En primer lugar, puede utilizar IEnumerable<Order> o IEnumerable<object> como tipo de devolución en lugar de JsonResult y devolver solo orderRepository.GetAll() . Te recomiendo leer el artículo fr información adicional.

Sobre otro error con Bad Gateway. Intente agregar Newtonsoft.Json en la última versión 8.0.2 a las dependencias en package.json y usar.

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

Por cierto, uno puede reproducir el error "Error HTTP 502.3 - Puerta de enlace defectuosa", que describe si acabo de establecer un punto de interrupción en la declaración de retorno del código de trabajo y esperar lo suficiente. Por lo tanto, verá el error "Error HTTP 502.3 - Puerta de enlace incorrecta" muy pronto en muchos errores comunes.

Puede considerarnos opciones de serialización más útiles. Por ejemplo

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué