在HttpResponseMessage中接收错误的状态代码

时间:2016-12-27 13:47:39

标签: c# asp.net-web-api

我正在使用WebApi进行服务。它有一个带GET方法的控制器。当我从客户端调用它并返回Unauthorized状态代码时,我不会在HttpResponseMessage中获得Unauthorized,而是在NotFound中获取。

[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()处放置了一个断点,它在那里停止,因此它到达了控制器方法。

为什么我在客户端获取NotFound而不是Unauthorized?

1 个答案:

答案 0 :(得分:-1)

控制器路由属性[Route("api/[controller]")]在那里?

删除行动路线,您可以尝试这个

[HttpGet("test")]