Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
La migración de Asp.Net Core 2 a .Net 6 me dio problemas con XMLHttpRequest

Amigos, acabo de migrar mi aplicación ASP.Net Core 2 MVC a .Net 6, pero desde entonces tengo un problema extraño: los textos de mis respuestas XMLHttpRequest siempre están vacíos, "{}" o [{},{},{ },{}] para matrices, a pesar de que mi backend realmente devuelve datos.

Aquí hay un ejemplo de un método de control (TestLoad) que devuelve una clase simple (TestClass). Tenga en cuenta que cuando interrumpo la línea de retorno, el valor devuelto está bien, o al menos no veo nada malo (vea la imagen para ver la información de depuración): backend

 public class TestClass { public int id = 0; public string title = "Title"; public bool active = false; } public JsonResult TestLoad() { TestClass testClass = new TestClass(); testClass.id = 10; testClass.title = "Yeah man!"; testClass.active = true; JsonResult jsonRes = Json(testClass); return jsonRes; }

Pero una vez en el front-end, obtuve un objeto vacío, no indefinido ni nulo, pero realmente un objeto vacío (ver imagen para información de depuración): frontend

 var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { var dt = JSON.parse(xmlhttp.responseText); if (dt == 'err') { alert('error'); } else if (dt !== null) { alert(dt.title); } } else { alert(xmlhttp.status); } } } ldwait(false, false); xmlhttp.open("GET", rv + "ajxGame/TestLoad", true); xmlhttp.setRequestHeader('Cache-Control', 'no-store'); xmlhttp.setRequestHeader("Content-Type", "application/json"); xmlhttp.send();

Cualquier ayuda sería muy apreciada ya que no tengo ni idea de lo que sucedió. De nuevo, mi código no ha cambiado, pero mi proyecto ha migrado de .Net Core 2 a .Net 6.

Gracias

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¿Está utilizando páginas de Razor en su Asp.net core 6?

Si es así, la forma en que llama a su método puede ser el problema. Para solicitudes posteriores, llame desde el cliente ?handler=TestLoad y en el servidor asegúrese de que el nombre del método sea OnPostTestLoad() .

Las solicitudes de obtención están deshabilitadas de forma predeterminada y deben habilitarse. Mensaje de advertencia de Microsoft

Para obtener más información, consulte este enlace de documentos de Microsoft


Otro problema puede ser la forma en que devuelves tu clase. Intente devolverlo como un objeto JSON en su lugar.

 return new JsonResult(new {objClass: testClass});

Y en el lado del cliente, obtenga su clase como una propiedad de objeto

 let objClass = result.objClass;
about 4 years ago · Juan Pablo Isaza Denunciar

0

agregaría un tipo de respuesta y reemplazaría onreadystatechange con onload

 xmlhttp.responseType = 'json'; xmlhttp.onload = () => { console.log("load - "+ JSON.stringify(xhr.response)); var data = xhr.response; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En realidad, mi error fue simplemente que olvidé agregar { get; establecer; } en cada propiedad de mi TestClass en la parte de backend. Funcionó sin él en .Net Core 2, pero parece que ahora es obligatorio en .Net 6

 public class TestClass { public int id {get; set;} = 0; public string title {get; set;} = "Title"; public bool active {get; set;} = false; }

... gracias a los que intentaron una respuesta!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda