2012-03-09 51 views
3

在我的應用程序中,我試圖獲得它,以便在進行REST API調用時,如果發生錯誤,它會返回正確的狀態碼,然後在響應正文中使用Json或Xml。MVC 3 + REST返回自定義http錯誤?

所以400: { 'ErrorCode': '400', 'Reason' : 'You did something wrong..' }

400: <Error><ErrorCode>400</ErrorCode><Reason>You did something wrong</Reason></Error>

但是我似乎無法找到如何設置狀態和身體來做到這一點。使用提琴手檢查什麼傳回來和第四我發現,如果我返回正常ActionResult然後我可以返回正文消息確定,但狀態是200.如果我使用HttpException然後我可以設置狀態碼,但正文消息是作爲一個大型的html文檔返回。我試過使用HttpStatusCodeResult但這似乎失敗,並返回302.

我有點難住。

+0

很肯定拋出的異常被傳回Rest。除非你讓它在某個地方停用 – Doomsknight 2012-03-09 15:01:09

回答

0

查看MVC 4 Beta,有一個稱爲Web API的新功能,可以幫助您解決此問題。

+1

直到它變成alpha後,才能使用MVC 4恐怕。 – David 2012-03-09 13:50:36

+0

@David我不知道它的解決方案。但MVC 4是測試版。 http://www.asp.net/mvc/mvc4 – Doomsknight 2012-03-09 14:58:49

+0

@Doomsknight是道歉,我的意思是,直到它獲得官方發佈日期。不知道爲什麼我寫了阿爾法:s – David 2012-03-09 15:19:28

2

的Web API可以通過各種方式處理這個問題,但如果你想堅持到ASP.NET MVC然後使用下面的代碼:

Response.StatusCode = 500; 
Response.TrySkipIisCustomErrors = true; 
return Content("Error description goes here.", "text/plain");