2013-03-21 82 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;