En este artículo, aprenderá a resolver ‘El tipo 'ObjectContent`1' no pudo serializar el cuerpo de respuesta para el tipo de contenido 'application/XML; charset=utf-8' ?’. Encontré dos soluciones para resolver este problema.
El error que obtuviste de manera predeterminada cuando serializaste el cuerpo de la respuesta:
El tipo 'ObjectContent`1' no pudo serializar el cuerpo de la respuesta para el tipo de contenido 'application/xml; charset=utf-8'.
Leí algunos artículos en la web, encontré que el nuevo error es el siguiente:
El tipo 'ObjectContent`1' no pudo serializar el cuerpo de la respuesta para el tipo de contenido 'application/json; charset=utf-8'.
Solucioné estos errores agregando algunas líneas de código a WebApiConfig.cs archivo, Aquí las soluciones para resolver los errores:
Solución 1:agregue estas líneas al método Application_Start() del archivo Global.asax
Solución 1:Agregue estas líneas al método Application_Start() del archivo Global.asax
//Add these Lines to Serializing Data to JSON Format
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
Código completo de Global.asax Archivo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
namespace CRUD_API
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Add these Lines to Serializing Data to JSON Format
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
}
}
}
Solución 2:Agregue estas líneas al método Register() del archivo WebApiConfig.cs dentro de la carpeta App_Start
Solución 2:Agregue estas líneas al método Register() del archivo WebApiConfig.cs dentro de la carpeta App_Start
// Serializing the Data to Json Format
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
Código completo del archivo WebApiConfig.cs
using System.Web.Http;
namespace CRUD_API
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Serializing the Data to Json Format
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
}
}
}
Espero que este artículo lo ayude a comprender cómo resolver el error de tipo 'ObjectContent`1' al serializar el cuerpo de respuesta para el tipo de contenido 'aplicación/XML; juego de caracteres=utf-8'?
Comparta sus valiosos comentarios, publique su comentario al final de este artículo. ¡Gracias!