簡體   English   中英

ASP.NET Web API幫助頁面包沒有獲得所有api端點

[英]ASP.NET Web API Help Page package does not get all api endpoints

我通過nuget將ASP.NET 4 Web API幫助頁面包安裝到我的Web Api項目中。 由於某種原因,它不會顯示所有api端點。 我有文檔設置使用XML。 不知道為什么會這樣,任何幫助表示贊賞。

這是一個示例控制器

    public class ProductController : BaseController
    {
        // GET api/Product/Get/5/43324
        [AcceptVerbs("GET")]
        public ApiProduct Get(int id, [FromUri]int productId)
        {
             //// logic
        }
   }

路線

config.Routes.MapHttpRoute(
                name: "api-info",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
            );

謝謝

我想出了問題,這里的問題是,在Web API中沒有動作和方法直接映射到動詞和參數,更新我的路由到這個修復了問題並且所有路由都顯示出來。

config.Routes.MapHttpRoute(
                name: "apsi-info",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

如果上述解決方案無法解決您的問題 - 請查看並確保您沒有定義AcceptVerbs屬性及其快捷方式:

public class ProductController : BaseController
{
    // GET api/Product/Get/5/43324
    [AcceptVerbs("GET")]
    [HttpGet]
    public ApiProduct Get(int id, [FromUri]int productId)
    {
         //// logic
    }

}

刪除其中一個它應該工作。

HTTP方法可能無法使用的另一個原因,無論是作為端點還是未在自動生成的幫助中顯示:

該功能可能是private而不是public


會出現:

[HttpGet]
[Route("api/projects")]
public IHttpActionResult GetCount()
{
    return Ok(db.Projects.Count());
}

不會出現:

[HttpGet]
[Route("api/projects")]
private IHttpActionResult GetCount()
{
    return Ok(db.Projects.Count());
}

對於有不同問題陳述的人,我的回答可能會有所幫助,因為我面臨類似的問題,浪費了幾個小時。

[PUT("Update/booking/{id}")]
public bool Put(id bookingId, [FromBody] BookingEntity bookingEntity)

此api端點不會出現在API幫助頁面中。 如果您觀察到參數名稱在路徑{id}和方法參數“bookingId”中不同。 兩者應該與下面的代碼中指定的相同。

[PUT("Update/booking/{id}")]
public bool Put(id id, [FromBody] BookingEntity bookingEntity)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM