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 に答える