c# - 为什么 WebApi 帮助页面中不显示操作

标签 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)
    {...}
}

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 }
        );
    }
}

结果来自.../help

Hierarchy

API--------------------------Description

GET api/Hierarchy-------Gets Hierarchy(s) by guid(s)

POST api/Hierarchy-----No documentation available.

DELETE api/Hierarchy--Deletes Hierarchy(s)

帮助页面中缺少两个“操作”功能。知道我错过了什么吗?

此外,实际上一切都正常运行,显示一切的帮助页面是唯一的问题。

子问题:

还有一个次要问题,我已经为每个函数定义了 xml 注释,例如

/// <summary>
/// Deletes Hierarchy(s)
/// </summary>
/// <param name="guid">List of Hierarchies</param>
/// <returns>HttpResponseMessage</returns>

它们都是在 VS2012 中通过键入 /// 自动生成的,然后只需填写这些部分,但是帖子的帮助页面部分总是显示“没有可用的文档”。这是因为我还没有解决 application/x-www-form-urlencoded 选项卡下显示的问题(无法使用formmater 'JQueryMvcFormUrlEncodedFormatter' 错误)吗?

最佳答案

关于第一个问题:
List<Guid>即使用 FromUri 装饰不能像您期望的那样被模型绑定(bind)。这是一个最近修复的错误,我认为您使用的是以前的版本位,因此可能看不到它。您可以通过更改所有出现的 [FromUri]List<Guid> guid 来理解我的意思。比方说 string guid .您现在应该在帮助页面中看到所有路线。顺便说一句,ApiExplorer 探索每条路线,并为每条路线探索该路线的所有可达 Controller 。因此,您将看到的结果可能令人惊讶,但却是正确的……仅供引用。

关于第二个问题:
有关操作的文档是从编译项目时生成的文档文件中提取的。您可以通过执行以下操作来启用它:Project properties |构建 |输出 |检查“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")));

关于c# - 为什么 WebApi 帮助页面中不显示操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16990485/

相关文章:

c# - EF Core 6 中 entityEntry.Metadata.DefiningNavigationName() 的等效项是什么?

c# - 如何使用两个不同版本的 Visual Studio 处理 TFS DLL

c# - 如何使用 ScrollBarRenderer 更改滚动条颜色

asp.net - MVC Contrib Grid 是 Asp.Net MVC 2.0 的一部分吗?

c# - C# 中单个按钮有两个操作的弹出消息

api - 在全局速卖通上获取产品的推荐(合作伙伴关系)链接?

c# - 在 C# 中从 HTML 表中检索数据

c# - 在 asp.net 中使用文本框拆分单词

java - https : Authorization 401

ruby - 使用 ruby​​ SDK 将 S3 存储桶设置为网站