ASP.NET Web API:在ApiExplorer上调用ApiDescriptions抛出:在应用程序';s启动前初始化阶段
基于这篇博文,我正在编写一个“文档控制器”,与上面链接中所做的差不多。但是当我打以下电话时ASP.NET Web API:在ApiExplorer上调用ApiDescriptions抛出:在应用程序';s启动前初始化阶段,asp.net,asp.net-mvc,asp.net-web-api,asp.net-mvc-apiexplorer,Asp.net,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc Apiexplorer,基于这篇博文,我正在编写一个“文档控制器”,与上面链接中所做的差不多。但是当我打以下电话时 GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions 我收到一个InvalidOperationException声明:“在应用程序的预启动初始化阶段无法调用此方法。”。我已经看过了,但这并不能解决我的问题。我使用的是ASP.NETWebAPI4.20710.0,这是NuGet最新的版本(是吗?) 有人愿意
GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions
我收到一个InvalidOperationException声明:“在应用程序的预启动初始化阶段无法调用此方法。”。我已经看过了,但这并不能解决我的问题。我使用的是ASP.NETWebAPI4.20710.0,这是NuGet最新的版本(是吗?)
有人愿意在这个问题上给我一些帮助吗?是f.ex。在我调用APIControles之前,是否可以强制预启动初始化阶段完成?或者可以用另一种方式来处理
谢谢你的意见
编辑
这个电话是从一个GET内打出来的
public List<APIEndPoint> Get()
{
var controllers = GlobalConfiguration
.Configuration
.Services
.GetApiExplorer()
.ApiDescriptions;
...
}
公共列表Get()
{
var控制器=全局配置
配置
.服务
.GetApiExplorer()
.说明;
...
}
上面的链接提供了一个完整的示例。在解编译System.Web.Http程序集后,我意识到最有可能的原因是
ApiExplorer
s内部集合Lazy
,由于我不知道的原因,它没有正确初始化或设置为不可访问状态,导致异常。我通过更新ApiExplorer
解决了这个问题。在我的ApiController
中:
public List<APIEndPoint> Get()
{
var apiEx = new ApiExplorer(ControllerContext.Configuration);
var controllers = apiEx.ApiDescriptions;
...
}
公共列表Get()
{
var apiEx=新的ApiExplorer(ControllerContext.Configuration);
var控制器=apiEx.ApiDescriptions;
...
}
这行代码在哪里GlobalConfiguration.Configuration.Services.GetApiExplorer().apisdescriptions
?哪一类哪一种方法?这很有效!但有一个细节。如果我将ApiExplorer
创建为ApiExplorer(GlobalConfiguration.Configuration)
,那么我仍然会得到InvalidOperationException
,但是ApiExplorer(ControllerContext.Configuration)
工作正常。