2016-08-16 13 views
0

私のWebAPIで、Bad Authorizationが検出された場合、私は以下を使用します。WebAPIから401が返却されない

[HttpPost] 
    public HttpResponseMessage CustomerQuotationComplete(Guid apiKey, int EnquiryId, int SiteId, bool accepted) 
    { 
     if (IsRequestAuthorized()) 
     { 
     ... 
     } 
     else 
     { 
      var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Bad Authentication" }; 
      throw new HttpResponseException(msg); 
     } 
    } 

しかし、実際に302発見応答を受信して​​いますが、401未承認ではありません。

どうしたのですか?

答えて

0

てみexeptionをスローをするのではなく、あなたのメッセージを返します:

var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Bad Authentication" }; 
return msg; 
+0

に戻ることができます。 – Matt

+0

同様のコードを持つと、http 401が返されます。[グローバルフィルタまたはOWINの詳細]を使用していないかどうかを確認してください(http://stackoverflow.com/questions/20149750/owin-unauthorised-webapi-call- login-page-401よりもむしろlogin +その他の目的のために、あなたのコントローラーメソッドを呼び出すことになります)。単純な空のプロジェクトにも試してみましょう。これはプロジェクトの設定と関係があります。 – bsoulier

4

あなたが不正な応答上記と同じことを

[HttpPost] 
    public IHttpActionResult CustomerQuotationComplete(Guid apiKey, int EnquiryId, int SiteId, bool accepted) 
    { 
     if (IsRequestAuthorized()) 
     { 
     ... 
     } 
     else 
     { 
      return this.Unauthorized(); 
     } 
    } 
+0

残念ながらthis.Unauthorized(Http.Results.UnauthorisedResult)をHttpresponseMessage型に変換することはできません – Matt

+0

編集した例を参照してください。戻り値の型をIHttpActionResultに変更しました –

+0

これはどちらにも違いがありません。そのすべてが非常に奇妙で、プロジェクト内で他のものとまったく同じものでなければならず、予期せぬ結果が生じます。 – Matt

関連する問題