web-dev-qa-db-ja.com

services.AddSwaggerGen()エラーを与える

私がやろうとしているのは、ASP.Net Coreアプリケーションにswaggerを追加することだけです。私はチュートリアルを見ていますが、Startup.csファイルのconfigure services領域の下にservices.AddSwaggerGen();を追加するだけです。 MVCのような通常のサービスと同じように...しかし、エラーが表示されます。

必須の仮パラメーター「setupAction」に対応する引数は指定されていません...

services.AddSwaggerGen()になんらかの引数を提供している人はいないので、ここで何が欠けているのか誰もが知っていますか?

SwashBuckler.AspNetCore依存関係を追加したため、swaggerがアプリケーションに含まれています。なぜ赤色で上記のエラーが発生するのかわからないだけです。

14
Daniel Jackson

これは、ASP.NET CoreのAddSwaggerGen()拡張メソッドの実装では、セットアップアクションとして機能する_Action<SwaggerGenOptions>_引数を指定する必要があるために発生します。例えば:

_services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});
_

ASP.NET CoreアプリでSwaggerをセットアップする方法の詳細については、こちらをご覧ください こちら

UPDATE:以前のバージョンでは、AddSwaggerGen()拡張メソッドは引数を受け入れませんでしたが、この呼び出しにはConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction)ConfigureSwaggerDocumentを削除し、AddSwaggerGen()メソッドにセットアップアクションを追加しただけだと思います。それはあなたのチュートリアルが時代遅れのバージョンのSwaggerをセットアップする方法を示しているようだと言われています。

問題がありました

IServiceCollectionには「AddSwaggerGen」の定義が含まれていません

Swashbuckle.AspNetCoreの代わりにSwashbuckle.AspNetCore.Swaggernugetパッケージをインストールしたことがわかりました。

.NET Core 3には、 here で説明したいくつかの問題があります。解決策は、以下をプロジェクトファイルに追加して、以前のバージョンを置き換えることです。

<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc2" />
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc2" />
88
Mik