3

基于这篇博文http://codebetter.com/johnvpetersen/2012/08/01/documenting-your-asp-net-web-apis/我正在写一个“文档控制器”,就像它在上面的链接。但是,当我拨打以下电话时

GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions

我收到一个InvalidOperationException说明:“在应用程序的预启动初始化阶段无法调用此方法。 ”。我看过ASP.NET:在应用程序的预启动初始化阶段无法调用此方法,但这并没有为我解决。我在 ASP.NET Web API 4.20710.0 上,这是 NuGet 的最新版本(是吗?)。

有人愿意在这个问题上为我提供一些帮助吗?是f.ex吗?可以在调用 ApiDescriptions 之前强制完成预启动初始化阶段吗?或者它可以以另一种方式进行吗?

感谢您的任何意见!

编辑

调用是从 GET 中进行的

public List<APIEndPoint> Get()
{
  var controllers = GlobalConfiguration
    .Configuration
    .Services
    .GetApiExplorer()
    .ApiDescriptions; 
  ... 
}

上面的链接提供了一个完整的例子。

4

1 回答 1

5

我意识到,在对 System.Web.Http 程序集进行反编译后,最可能的原因是ApiExplorers 内部集合Lazy<Collection<ApiDescription>>,由于我不知道的原因,没有正确初始化或设置为不可访问状态,导致异常。我通过更新一个ApiExplorer. 在我的ApiController

public List<APIEndPoint> Get()
{
    var apiEx = new ApiExplorer(ControllerContext.Configuration);
    var controllers = apiEx.ApiDescriptions;

    ...
} 
于 2012-09-07T07:13:53.147 回答