ASP.Net Web Api - ApiExplorer不包含任何ApiDescriptions

Jer*_*y G 12 c# asp.net asp.net-mvc asp.net-web-api asp.net-mvc-apiexplorer

我试图在我的Web服务的控制器中实现一个Options方法,它将返回一个消息,其中包含与控制器关联的URI端点的有效HTTP方法.我的Options方法看起来像这样:

public HttpResponseMessage Options()
{
    var resp = new HttpResponseMessage();
    resp.Content = new StringContent("");

    var apiExplorer = GlobalConfiguration.Configuration.Services
        .GetApiExplorer();

    foreach (ApiDescription api in apiExplorer.ApiDescriptions)
    {
        resp.Content.Headers.Add("Allow", api.HttpMethod.Method);
    }

    return resp;
}
Run Code Online (Sandbox Code Playgroud)

我已经在具有Get,Post和Delete方法的控制器内部的全新Web Api项目(暗示:未改变的路由)中尝试了上述方法.正如所料,返回"允许:GET,POST,DELETE"的响应.但是,我遇到了麻烦,将其添加到我正在处理的更大的项目中.在较大的项目中,ApiExplorer中的ApiDescriptions列表不包含任何元素.为什么是这样?我怀疑这是由于已经实现的自定义路由,尽管怀疑的唯一依据是以下链接:

http://forums.asp.net/t/1821651.aspx/1

有没有其他人经历过这个空的ApiDescription列表?如果是这样,你找到了补救措施吗?

注意:我使用的是MCV 4 RC

Pai*_*ook 1

您应该升级到昨天发布的 WebApi RTM,然后查看昨天发布的新发布的ASP.NET WebApi 帮助页面(预览版) 。

该包会自动生成站点上 Web API 的帮助页面内容。您的帮助页面的访问者可以使用此内容来了解​​如何调用您的 Web API。帮助页面生成的所有内容都可以使用 ASP.NET MVC 和 Razor 完全自定义。

它正在幕后实现 ApiExplorer。