为什么WebApi帮助页面中没有显示操作

jp3*_*p36 9 c# asp.net api asp.net-web-api

我在Visual Studio 2012中有一个WebApi项目.我是从模板创建的,然后通过使用NuGet添加到HelpPage中.以下是我的例子.

HierarchyController.cs

public class HierarchyController : ApiController
{
    [ActionName("DefaultAction")]
    public List<Hierarchy> Get([FromUri]List<Guid> guid)
    {...}

    [HttpGet]
    public List<Hierarchy> Children([FromUri]List<Guid> guid)
    {...}

    [HttpGet]
    public List<Hierarchy> Descendants([FromUri]List<Guid> guid)
    {...}

    [ActionName("DefaultAction")]
    public HttpResponseMessage Post([FromBody]List<Hierarchy> hierarchies)
    {...}

    [ActionName("DefaultAction")]
    public HttpResponseMessage Delete([FromUri]List<Guid> guid)
    {...}
}
Run Code Online (Sandbox Code Playgroud)

WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "ActionApi",
            routeTemplate: "api/{controller}/{action}/{guid}"
        );
        config.Routes.MapHttpRoute(
            name: "GuidApi",
            routeTemplate: "api/{controller}/{guid}",
            defaults: new { action = "DefaultAction", guid = RouteParameter.Optional }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

来自.../help的结果

等级制度

API --------------------------说明

GET api/Hierarchy -------通过guid获取层次结构

POST api/Hierarchy -----没有可用的文档.

DELETE api/Hierarchy - 删除层次结构

帮助页面中缺少这两个"操作"功能.知道我错过了什么吗?

此外,一切确实正常运行,显示一切的帮助页面是唯一的问题.

子问题:

另外一个问题我已经为每个函数定义了xml注释,例如

/// <summary>
/// Deletes Hierarchy(s)
/// </summary>
/// <param name="guid">List of Hierarchies</param>
/// <returns>HttpResponseMessage</returns>
Run Code Online (Sandbox Code Playgroud)

它们都是在VS2012中自动生成的,///然后键入然后填写部分,但是Post的帮助页面部分总是说"没有文档可用".这是因为我没有修复显示在application/x-www-form-urlencoded选项卡下的问题(不能使用formmater'JQueryMvcFormUrlEncodedFormatter'错误)?

Kir*_*lla 10

关于第一个问题:
List<Guid>即使用FromUri装饰也不能像你期望的那样受到模型限制.这是一个最近修复的错误,我认为你正在使用以前的版本位,因此可能无法看到这个.你可以看到我通过改变所有出现意味着[FromUri]List<Guid> guid与假设string guid.您现在应该在帮助页面中看到所有路线.顺便说一下,ApiExplorer探索每条路线,并为每条路线探索该路线上所有可到达的控制器.所以,你会看到的结果可能会令人惊讶,但是正确的......只是fyi.

关于第二个问题:
有关操作的文档是从编译项目时生成的文档文件中获取的.您可以通过执行以下操作来启用它:项目属性| 建立| 输出| 检查'Xml文档文件'

现在取消注释文件'Areas\HelpPage\App_Start\HelpPageConfig.cs'中的以下行,并设置文档文件位置的相应路径

//// Uncomment the following to use the documentation from XML documentation
//config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
Run Code Online (Sandbox Code Playgroud)