Ho un metodo Web Api che dovrebbe restituire un dati XML ma restituisce stringa:Come restituire dati Xml da un metodo API Web?
public class HealthCheckController : ApiController
{
[HttpGet]
public string Index()
{
var healthCheckReport = new HealthCheckReport();
return healthCheckReport.ToXml();
}
}
Restituisce:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<myroot><mynode></mynode></myroot>
</string>
e ho aggiunto questa mappatura:
config.Routes.MapHttpRoute(
name: "HealthCheck",
routeTemplate: "healthcheck",
defaults: new
{
controller = "HealthCheck",
action = "Index"
});
Come fare restituire solo i bit xml:
<myroot><mynode></mynode></myroot>
Se stavo usando solo MVC, che potrebbe utilizzare il seguito, ma API Web non supporta "Contenuto":
[HttpGet]
public ActionResult Index()
{
var healthCheckReport = new HealthCheckReport();
return Content(healthCheckReport.ToXml(), "text/xml");
}
Ho anche aggiunto i codici di seguito per la classe WebApiConfig:
config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.XmlFormatter.UseXmlSerializer = true;
puoi semplicemente restituire l'istanza HealthCheckReport, e lasciare che il formattatore XML fare la serializzazione ? In questo momento, stai serializzando su XML nel tuo controller e quindi passando quella stringa al formattatore XML. Quindi il formattatore XML serializza la stringa in XML. –