繁体   English   中英

C#/。NET webapi-从具有列表返回类型的控制器中的方法返回异常(HTTP状态代码)

[英]C#/.NET webapi - Returning an exception (HTTP Status Code) From Method in Controller with List Return Type

当传入标头中的令牌与我的配置中的值不匹配时,我想限制对api的访问。 我在项目中创建了一个自定义guid,以防止访问不匹配的令牌值或空标题值。

使用此设置,如何从控制器的操作中正确返回404或其他状态,该控制器的返回类型是特定类型的列表(用于返回JSON)?

  [HttpGet]
  [Route("getList")]
  public List<_Type> func([FromUri] int? value)
  {
      if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
          throw new HttpException(404, "Not found");   //works but triggers a object null reference exeption
      return new List<_Type>();
  }

您可以将返回类型更改为IHttpActionResult。 Ok()方法将一个对象作为参数,以便您可以传递您的集合。

[HttpGet]
  [Route("getList")]
  public IHttpActionResult func([FromUri] int? value)
  {
      if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
          return NotFound();  //works but triggers a object null reference exeption
      return Ok(new List<_Type>());
  }
[HttpGet]
[Route("getList")]
public ActionResult func([FromUri] int? value) {
    if (Request.Headers == null || !Request.Headers.Contains("token") || Request.Headers.GetValues("token").First() != ConfigurationManager.AppSettings["token"])
        return NotFound();
    return Json(new List<_Type>());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM