2016-12-27 8 views
0

私は自分のサービスにWebApiを使用しています。それはGETメソッドを持つコントローラを持っています。私がクライアントからそれを呼び出してUnauthorizedステータスコードを返すと、私はHttpResponseMessageではUnauthorizedを取得せず、代わりにNotFoundを取得します。HttpResponseMessageで間違ったステータスコードを受け取る

[RoutePrefix("api/dummies")] 
public class DummiesController : ApiController 
{  
    [Route("test")] 
    [HttpGet] 
    public IHttpActionResult GetTest() 
    { 
    return StatusCode(HttpStatusCode.Unauthorized); 
    } 
} 

は、これは私がクライアントから呼び出す方法です:

public class Persistance 
{ 
    private HttpClient _client; 

    public Persistance() 
    { 
    _client = new HttpClient(); 
    _client.BaseAddress = new Uri("http://localhost:10767/"); 
    } 

    public async Task DummyMethod() 
    { 
    HttpResponseMessage response = await _client.GetAsync("api/dummies/test"); 
    if (response.StatusCode == HttpStatusCode.Unauthorized) 
    { 
     // etc.. 
    } 
    } 
} 

responseの内容:

StatusCode NotFound System.Net.HttpStatusCode 

は私がGetTest()にブレークポイントを置くと、それはそこに停止し、コントローラメソッドに到達します。

クライアントでUnauthorizedではなくNotFoundを取得するのはなぜですか?

+1

を試すことができます。 GetAsync( "http:// localhost ....") –

+1

私はコンストラクタにUriを設定しました。コンストラクタのコードを追加しました。 – kwarr

+0

コントローラが正常に見えます。私はテストwebapiアプリケーションを作成し、ブラウザでapi/dummies/test(応答だった)を呼び出すことができます。 –

答えて

-1

コントローラルート属性[Route("api/[controller]")]はありますか?

または

行動ルートを削除し、あなたは、無効なURIを指定するには、この

[HttpGet("test")] 
+0

はい、コントローラの属性はあります。私の編集を参照してください。私はあなたの提案を使用すると 'エラーCS1729: 'System.Web.Http.HttpGetAttribute'に1つの引数を取るコンストラクタが含まれていません。 – kwarr

+0

申し訳ありませんが、私のせいです。私のコードは、netcoreで使用しています。 HttpGetライブラリをチェックしましたか?それがSystem.Web.Mvcならばこの問題が発生しますか?だから私はあなたのコードを試して、無許可の応答を得る。 – pridemkA

+0

私はMvcを使用しません。WebApiです。 HttpGetライブラリをチェックするとどういう意味ですか? – kwarr

関連する問題