簡體   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