web-dev-qa-db-fra.com

services.AddSwaggerGen () donnant une erreur

Tout ce que j'essaie de faire, c'est d'ajouter du swagger à une application ASP.Net Core. Je regarde un tutoriel et tout ce que je vois, c'est ajouter services.AddSwaggerGen(); sous la zone de configuration des services dans le fichier Startup.cs. Comme tout service normal comme MVC ... Mais je reçois une erreur:

Aucun argument ne correspond au paramètre formel requis 'setupAction' ...

Je ne vois personne fournir aucun type d'argument à services.AddSwaggerGen() alors quelqu'un sait-il ce qui me manque ici?

J'ai ajouté le SwashBuckler.AspNetCore dépendance donc swagger est dans l'application. Je ne sais pas pourquoi il est rouge et donne l'erreur ci-dessus.

14
Daniel Jackson

Cela se produit car l'implémentation de la méthode d'extension AddSwaggerGen() dans ASP.NET Core vous oblige à fournir l'argument Action<SwaggerGenOptions> Qui sert d'action de configuration. Par exemple:

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

Vous pouvez en savoir plus sur la configuration de Swagger avec l'application ASP.NET Core ici .

MISE À JOUR: Dans les versions précédentes, ils avaient la méthode d'extension AddSwaggerGen() n'acceptant aucun argument, mais cet appel était accompagné de l'appel ConfigureSwaggerDocument(Action<SwaggerGenOptions> setupAction). Je suppose qu'ils se sont juste débarrassés de ConfigureSwaggerDocument et ont ajouté une action de configuration à la méthode AddSwaggerGen(). Cela étant dit, il semble que votre tutoriel montre comment configurer une version obsolète du Swagger.

J'ai eu un problème,

IServiceCollection ne contient pas de définition pour 'AddSwaggerGen'

Il s'avère que j'ai installé Swashbuckle.AspNetCore.Swagger package nuget au lieu de Swashbuckle.AspNetCore .

Dans .NET Core 3, il y a quelques problèmes comme discuté ici . La solution consiste à ajouter ce qui suit au fichier de projet, en remplaçant la version précédente.

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