5

我通过 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 }
            );

谢谢

4

4 回答 4

5

我发现了问题,这里的问题是,在 Web API 中没有操作,方法直接映射到动词和参数,更新我的路由到这个解决了问题,所有路由都显示出来了。

config.Routes.MapHttpRoute(
                name: "apsi-info",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
于 2013-06-28T20:13:58.343 回答
1

如果上述解决方案不能解决您的问题 - 请查看并确保您没有同时定义 AcceptVerbs 属性及其快捷方式:

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

}

删除其中一个,它应该可以工作。

于 2017-01-24T23:18:18.453 回答
0

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());
}
于 2018-04-18T22:47:02.893 回答
0

我的回答可能对有不同问题陈述的人有所帮助,因为我遇到了类似的问题并浪费了几个小时。

[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)
于 2018-10-28T12:44:23.860 回答