Asp.net-Mvc-4

從 ASP.NET MVC Web API 返回 400 而不是 404

  • June 29, 2022

我使用 VS2012 創建了 ASP.NET MVC Web API 項目的 hello world:

public class ValuesController : ApiController
{
   // GET api/values
   public IEnumerable<string> Get()
   {
       return new string[] { "value1", "value2" };
   }

   // GET api/values/5
   public string Get(int id)
   {
       return "value";
   }
}

向該控制器發出 get 請求會返回狀態為 200 的一些 XML 數據。到目前為止一切正常。

當我刪除該方法時,如下所示:

public class ValuesController : ApiController
{
   // GET api/values
   //public IEnumerable<string> Get()
   //{
   //    return new string[] { "value1", "value2" };
   //}

   // GET api/values/5
   public string Get(int id)
   {
       return "value";
   }
}

然後我得到一個 404 未找到。我想要的是 400 錯誤請求,因為必須提供 ID。我怎樣才能做到這一點?

您不必Get()為了拋出錯誤而保留該方法。將 Get by ID 方法的簽名更改為:

public string Get(int? id = null)
{
   if (id == null) throw new HttpResponseException(HttpStatusCode.BadRequest);
   return "value";
}

一種方法是包含該方法,但會引發異常:

public class ValuesController : ApiController
{
   // GET api/values
   public void Get()
   {
       throw new HttpResponseException(HttpStatusCode.BadRequest);
   }

   // GET api/values/5
   public string Get(int id)
   {
       return "value";
   }
}

引用自:https://stackoverflow.com/questions/14188827