2013-06-19 138 views
9

如何從WebAPI方法返回HTTP 403?我試着拋出HttpResponseException與HttpStatusCode.Forbidden,我已經試過在WebAPI方法中返回HTTP 403

return request.CreateErrorResponse(HttpStatusCode.Forbidden, pEx); 

無論其工作。兩者總是返回一個HTTP 200.我錯過了什麼?它必須是簡單的東西,但我沒有看到它。

+0

您是否試過這裏的解決方案? http://stackoverflow.com/a/10658604/163495 – Richard

+0

http://stackoverflow.com/questions/17081826/net-web-api-throw-exception-return-response-return-error-response-for-404- 400-r – SimSimY

+2

你能分享更多的代碼...我們無法複製你的問題 –

回答

3

您的路由配置可能有問題。以下是一個工作示例。把它放在你的控制器裏,看看它是否有效。如果沒有,請使用診斷工具(例如Cobisi Routing Assistant)檢查路由。

public HttpResponseMessage GetSomeString(int id) 
{ 
    // This method is not allowed! 
    return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "This method is not allowed!"); 
} 
+1

Teoman,這是行不通的。奇怪的是,它似乎與DotNetOpenAuth有某種相互作用。我的web api是一個用DotNetOpenAuth保護的端點。如果我在沒有經過DotNetOpenAuth驗證的情況下調用我的方法,我會得到一個403.但是,如果我通過DotNetOpenAuth驗證進行調用,並且驗證失敗(這是我想要返回403的情況),則同一行你建議運行的代碼,但不管我得到200回。所以我想我必須重新發佈一個dotnetopenauth標籤。 –

+3

從HttpResponseMessage獲取無效轉換爲字符串 – user3953989

+0

如何修復無效轉換爲字符串? – GreyCloud