2013-06-04 65 views
0

我已經在SelfHost配置生成像XML文檔響應的APIController:更改Web API響應格式化

public XmlDocument Get(int id) 
{ 
    XmlDocument doc; 
    doc = repo.get(id); // simplified 

    if(doc != null) 
     return doc; 

    throw new HttpResponseExeption(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Something went terribly wrong.")); 
} 

在例外的情況下,我想發送回客戶端JSON格式而不是XML響應, 所以我可以正確解析jQuery AJAX請求(錯誤回調)中的錯誤消息:

JSON.parse(jqXHR.responseText).Message;

如何將HttpResponseException的「即時」更改爲JSON,考慮到jQuery請求爲正確的流發送dataType:'xml'?

回答

1

如果我的理解正確,似乎你總是希望錯誤被髮送回JSON而不是內容協商爲XML?這看起來很奇怪,因爲如果客戶端要求XML中的響應主體,他們通常也希望錯誤消息以XML格式發回。

但如果你真的必須的,這裏是你如何去這樣做:

public XmlDocument Get(int id) 
{ 
    XmlDocument doc; 
    doc = repo.get(id); // simplified 

    if(doc != null) 
     return doc; 

    throw new HttpResponseExeption(
     Request.CreateResponse(HttpStatusCode.NotFound, new HttpError("Something went terribly wrong."), Configuration.Formatters.JsonFormatter)); 
} 
+0

是的,這很奇怪,但這是一個需要XML類型的響應唯一控制器;對於其他我有一個獨特的客戶端錯誤處理函數,所以我想統一這個問題。非常感謝。 – Jumpa