2013-06-19 8 views
9

WebAPIメソッドからHTTP 403を返すにはどうすればよいですか?私はHttpStatusCode.ForbiddenでHttpResponseExceptionを投げて試してみた、と私は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検証を経て呼び出すと、verificatoinが失敗する(これは403を返す状況です)、同じ行私が200のバックを得ても、あなたが実行することを提案したコードはあります。ですから、私はdotnetopenauthタグで再投稿しなければならないと思います。 –

+3

HttpResponseMessageから文字列への無効なキャストを取得する – user3953989

+0

無効なキャストを文字列に修正する方法はありますか? – GreyCloud

関連する問題