3

이 블로그 포스트 http://codebetter.com/johnvpetersen/2012/08/01/documenting-your-asp-net-web-apis/을 기반으로 작성한 것입니다. 위의 링크. 나는 다음과 같은 호출을ASP.NET 웹 API : ApiExplorer에서 ApiDescriptions 호출이 발생 함 :이 메서드는 응용 프로그램의 사전 시작 초기화 단계에서 호출 할 수 없습니다.

GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions 

을 할 때 나는 InvalidOperationException이이 진술 얻을 : "이 방법은 응용 프로그램의 사전 시작 초기 단계에서 호출 할 수 없습니다을.". ASP.NET: This method cannot be called during the application's pre-start initialization stage을 살펴 보았지만 해결되지 않았습니다. 나는 ASP.NET 웹 API 4.20710.0을 사용 중이며 NuGet에 따르면 최신 버전입니다 (예?).

누구든지 나를 도와 주겠니? 그것은 f.ex입니다. ApiDescriptions를 호출하기 전에 사전 시작 초기화 단계를 완료 할 수 있습니까? 또는 다른 방법으로 트위 킹 될 수 있습니까?

입력 해 주셔서 감사합니다. 통화가

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

위의 링크를 얻을 내에서 이루어집니다

EDIT 전체 예제를 제공합니다.

+0

? 어떤 방법으로 어떤 방법을? – nemesv

+0

@nemesv 원본으로 편집하십시오. – Andreas

답변

5

나는 이것에 가장 가능한 원인 내가 제대로 초기화되지 알고하지 말자 이유로했다 ApiExplorer의 내부 수집 Lazy<Collection<ApiDescription>>,이 있었다고는 System.Web.Http 어셈블리를 decopiling 후, 실현 또는이었다 inaccessibale 상태로 설정하면 예외가 발생합니다. 나는 ApiExplorer까지 새 것으로 그 문제를 해결했다. 내 ApiController :. 당신은`GlobalConfiguration.Configuration.Services.GetApiExplorer() ApiDescriptions`이 줄을해야합니까

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

    ... 
} 
+0

이 작품! 그러나 하나의 세부 사항이 있습니다. 'ApiExplorer'을'ApiExplorer (GlobalConfiguration.Configuration) '으로 만들면 여전히'InvalidOperationException'을 얻지 만'ApiExplorer (ControllerContext.Configuration)'은 정상적으로 동작합니다. –

+0

감사합니다 !!! 이 사람은 나를 완전히 곤란하게했다! 매력처럼 일했습니다. –