Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET Web API:在ApiExplorer上调用ApiDescriptions抛出:在应用程序';s启动前初始化阶段_Asp.net_Asp.net Mvc_Asp.net Web Api_Asp.net Mvc Apiexplorer - Fatal编程技术网

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)
工作正常。