如何更改ASP.NET Web API以永不返回text/html
404響應?我寧願它發回XML/JSON與ExceptionMessage
或Message
。從API,IMO返回HTML是沒有意義的。Web API - 如何防止404 HTML響應?
只是爲了澄清,這是在URL確實無效的情況下。
另一個問題是我在同一個項目中託管MVC和Web API,所以我需要做出不同的迴應。我猜這取決於URL是否以「api」開頭。
如何更改ASP.NET Web API以永不返回text/html
404響應?我寧願它發回XML/JSON與ExceptionMessage
或Message
。從API,IMO返回HTML是沒有意義的。Web API - 如何防止404 HTML響應?
只是爲了澄清,這是在URL確實無效的情況下。
另一個問題是我在同一個項目中託管MVC和Web API,所以我需要做出不同的迴應。我猜這取決於URL是否以「api」開頭。
您是否嘗試過使用Exception Filter?這可以讓你捕捉異常,然後設置響應類型「應用/ JSON的」,郵件等
你沒有得到這些HTML數據,如果你只需撥打您的ApiController的方法 throw new HttpResponseException(HttpStatusCode.NotFound);
地方。
只有在路由機制無法滿足您對ApiController的任何方法的請求時,纔會獲得此頁面。因此,HTML消息附加在應用程序級別上,而不是在ApiControllers中。這裏是你如何處理你的ASP.NET應用程序中的錯誤的很好的例子Custom error pages on ASP>NET MVC3。
我甚至會走得更遠,並檢查請求是否到WebAPI(而不是MVC),如果是的話,重定向到ErrorsContoller
的IHttpActionResult
。 如何編寫IHttpActionResult
作爲響應,您可以在這裏閱讀Action Results in Web API 2
返回的HTML包含什麼?你確定這個錯誤是由Web API返回的嗎?這些自定義的404消息是否由您的Web API端點返回?還是404找不到相關的端點? –
這是有人試圖從我的API請求的東西,他們只是完全輸入了錯誤的URL。 –
但這與Web API無關。爲什麼你的問題在這種情況下被標記?這是標準的ASP.NET錯誤頁面。我寫了一些關於如何使用Global.asax中的Application_Error事件處理錯誤的示例:http://stackoverflow.com/a/5229581/29407 –