【发布时间】:2013-03-12 16:00:31
【问题描述】:
我有一个 Web Api 方法,它应该返回一个 xml 数据,但它返回字符串:
public class HealthCheckController : ApiController
{
[HttpGet]
public string Index()
{
var healthCheckReport = new HealthCheckReport();
return healthCheckReport.ToXml();
}
}
返回:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<myroot><mynode></mynode></myroot>
</string>
我已经添加了这个映射:
config.Routes.MapHttpRoute(
name: "HealthCheck",
routeTemplate: "healthcheck",
defaults: new
{
controller = "HealthCheck",
action = "Index"
});
如何让它只返回 xml 位:
<myroot><mynode></mynode></myroot>
如果我只使用 MVC,我可以使用以下内容,但 Web API 不支持“内容”:
[HttpGet]
public ActionResult Index()
{
var healthCheckReport = new HealthCheckReport();
return Content(healthCheckReport.ToXml(), "text/xml");
}
我还在 WebApiConfig 类中添加了以下代码:
config.Formatters.Remove(config.Formatters.JsonFormatter);
config.Formatters.XmlFormatter.UseXmlSerializer = true;
【问题讨论】:
-
能否只返回 HealthCheckReport 实例,让 XML 格式化程序进行序列化?现在,您正在控制器中序列化为 XML,然后将该字符串传递给 XML 格式化程序。然后 XML 格式化程序将字符串序列化为 XML。
标签: xml asp.net-mvc asp.net-web-api