2013-03-21 69 views
-1

如何从web api控制器指定return xml?在一个浏览器中,数据以XML形式打开,其他形式以JSON形式打开。从Web Api控制器返回XML

编辑

这里是我的行动:

[HttpGet] 
    public IEnumerable<MagazineMeta> GetLastUploadPdfMeta(int count) 
    { 
     List<MagazineMeta> metas = _metaRepository 
       .GetAll() 
       .OrderBy(e => e.TimeAdd) 
       .Take(count) 
       .ToList(); 

     return metas; 
    } 
+0

你目前的代码是什么样的? – 2013-03-21 14:12:35

+0

你到目前为止尝试过_anything_吗? – 2013-03-21 14:13:06

+0

是否有任何指定返回数据格式的属性? – NET 2013-03-21 14:16:25

回答

7

这两条线加入的Application_Start月底在Global.asax.cs中:

GlobalConfiguration.Configuration.Formatters.Clear(); 
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter()); 

编辑: 正如@YishaiGalatzer指出的那样,这很快&d irty解决方法来实现最初提出的问题。为了获得所需的响应格式包括适当的接受在请求头(在这个问题上,“应用程序/ XML”的情况下)

+1

这是一个非常糟糕的一般做法。这样你就把Json完全从图片中拿出来了。这是一个大锤子。 Web API具有内容协商支持,这只会关闭它。请参阅此文章,了解如何:http://blogs.msdn.com/b/kiranchalla/archive/2012/02/25/content-negotiation-in-asp-net-mvc4-web-api-beta-part-1 .aspx – 2014-05-09 15:43:42

+0

根据这个问题,.NET总是希望返回XML,而不管标题,为什么downvote? – 2014-05-11 22:25:30

+0

因为练习是错误的,这是一个巨大的锤子,你正在展示一个相当不好的例子。首先,用户可能希望根据请求者返回正确的格式,他在问题中不太清楚。其次,有一种方法可以干净利落地进行操作,以免影响应用中的其他区域。我会显示这两个答案,而不是一个快速和肮脏的方式来解决它。 (除非答案被编辑,否则不能拿出反对票) – 2014-05-12 01:48:05

0

而对于其他人谁希望强制实施JSON代替,称之为:

GlobalConfiguration.Configuration.Formatters.Clear(); 
GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.JsonMediaTypeFormatter()); 
1

要使响应序列化你需要多一行

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;