2014-01-22 61 views
7

如何更改ASP.NET Web API以永不返回text/html 404響應?我寧願它發回XML/JSON與ExceptionMessageMessage。從API,IMO返回HTML是沒有意義的。Web API - 如何防止404 HTML響應?

只是爲了澄清,這是在URL確實無效的情況下。

另一個問題是我在同一個項目中託管MVC和Web API,所以我需要做出不同的迴應。我猜這取決於URL是否以「api」開頭。

+0

返回的HTML包含什麼?你確定這個錯誤是由Web API返回的嗎?這些自定義的404消息是否由您的Web API端點返回?還是404找不到相關的端點? –

+1

這是有人試圖從我的API請求的東西,他們只是完全輸入了錯誤的URL。 –

+1

但這與Web API無關。爲什麼你的問題在這種情況下被標記?這是標準的ASP.NET錯誤頁面。我寫了一些關於如何使用Global.asax中的Application_Error事件處理錯誤的示例:http://stackoverflow.com/a/5229581/29407 –

回答

0

您是否嘗試過使用Exception Filter?這可以讓你捕捉異常,然後設置響應類型「應用/ JSON的」,郵件等

2

你沒有得到這些HTML數據,如果你只需撥打您的ApiController的方法 throw new HttpResponseException(HttpStatusCode.NotFound); 地方。

只有在路由機制無法滿足您對ApiController的任何方法的請求時,纔會獲得此頁面。因此,HTML消息附加在應用程序級別上,而不是在ApiControllers中。這裏是你如何處理你的ASP.NET應用程序中的錯誤的很好的例子Custom error pages on ASP>NET MVC3

我甚至會走得更遠,並檢查請求是否到WebAPI(而不是MVC),如果是的話,重定向到ErrorsContollerIHttpActionResult。 如何編寫IHttpActionResult作爲響應,您可以在這裏閱讀Action Results in Web API 2