Error de WebAPI:el tipo ObjectContent`1 no pudo serializar el cuerpo de respuesta para el tipo de contenido application/xml; conjunto de caracteres =utf-8?

 C Programming >> Programación C >  >> Tags >> API
Error de WebAPI:el tipo ObjectContent`1 no pudo serializar el cuerpo de respuesta para el tipo de contenido application/xml; conjunto de caracteres =utf-8?

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!