WebAPI-Fehler:Der Typ „ObjectContent`1“ konnte den Antworttext für den Inhaltstyp „application/xml“ nicht serialisieren; Zeichensatz=utf-8?

 C Programming >> C-Programmierung >  >> Tags >> API
WebAPI-Fehler:Der Typ „ObjectContent`1“ konnte den Antworttext für den Inhaltstyp „application/xml“ nicht serialisieren; Zeichensatz=utf-8?

In diesem Artikel erfahren Sie, wie Sie „The 'ObjectContent`1' type failed to serialize the response body for content-type 'application/XML; charset=utf-8' ?’. Ich habe zwei Lösungen gefunden, um dieses Problem zu lösen.

Der Fehler, den Sie standardmäßig erhalten, wenn Sie den Antworttext serialisieren:

Der Typ „ObjectContent`1“ konnte den Antworttext für den Inhaltstyp „application/xml“ nicht serialisieren; charset=utf-8'.

Ich habe einige Artikel im Internet gelesen und festgestellt, dass der neue Fehler wie folgt lautet:

Der Typ „ObjectContent`1“ konnte den Antworttext für den Inhaltstyp „application/json; charset=utf-8'.

Ich habe diese Fehler behoben, indem ich der WebApiConfig.cs einige Codezeilen hinzugefügt habe Datei, Hier die Lösungen zur Behebung der Fehler:

Lösung 1:Fügen Sie diese Zeilen zur Methode Application_Start() der Datei Global.asax hinzu

Lösung 1:Fügen Sie diese Zeilen zur Methode Application_Start() der Datei Global.asax hinzu
//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);

Vollständiger Code von Global.asax Datei.

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);
        }
    }
}

Lösung 2:Fügen Sie diese Zeilen zur Methode Register() der Datei WebApiConfig.cs im Ordner App_Start hinzu

Lösung 2:Fügen Sie diese Zeilen zur Methode Register() der Datei WebApiConfig.cs im Ordner App_Start hinzu
// 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);
Vollständiger Code der Datei 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);
        }
    }
}

Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie Sie den Typ „ObjectContent`1“ beheben können, bei dem der Antworttext für den Inhaltstyp „application/XML; charset=utf-8'?

Teilen Sie Ihr wertvolles Feedback, bitte posten Sie Ihren Kommentar am Ende dieses Artikels. Vielen Dank!