Error: “No se ha registrado ningún servicio para el tipo ISwaggerProvider” SwashBuckle.AspNetCore.Cli es una herramienta utilizada para generar y visualizar documentación Swagger en aplicaciones web desarrolladas en .NET Core. Este error se produce cuando no se ha registrado el servicio necesario para ISwaggerProvider. Para solucionar este problema, debes asegurarte de registrar el servicio ISwaggerProvider en tu aplicación. Puedes hacerlo siguiendo estos pasos: 1. Abre el archivo Startup.cs en tu proyecto. 2. Dentro del método ConfigureServices, agrega el siguiente código: “` services.AddSwaggerGen(options => { // Configura las opciones de SwaggerGen si es necesario }); “` 3. Asegúrate de que también hayas agregado el paquete NuGet Swashbuckle.AspNetCore a tu proyecto. Una vez que hayas registrado el servicio ISwaggerProvider, este error debería solucionarse y podrás generar y visualizar la documentación Swagger correctamente.
Tengo un proyecto de WebApi en .Net 5 y ya he estado utilizando Swagger con la configuración predeterminada (services.AddSwaggerGen() en el método ConfigureServices y app.UseSwagger() y app.UseSwaggerUI() en el método Configure en Startup.cs) sin ningún problema.
Ahora decidí crear archivos de Swagger vía Swashbuckle.AspNetCore.Cli.
Creé un archivo de manifiesto:
.net new tool-manifest
y luego instalé Swashbuckle.AspNetCore.Cli:
dotnet tool install --version 6.2.3 Swashbuckle.AspNetCore.Cli
Hasta aquí todo está bien. También verifiqué si funciona con el comando dotnet swagger tofile --help
, y lo hace.
Ahora cuando quiero crear un archivo json vía dotnet swagger tofile --output api.json bin\Debug\net5.0\MyApiApi.dll v1
, obtengo:
System.InvalidOperationException: No se ha registrado ningún servicio para el tipo ‘Swashbuckle.AspNetCore.Swagger.ISwaggerProvider’.
en Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
en Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
en Swashbuckle.AspNetCore.Cli.Program.<>c__DisplayClass4_0.b__4(IDictionary 2 namedArgs) en C:\projects\ahoy\src\Swashbuckle.AspNetCore.Cli\Program.cs:línea 82
1 args) en C:\projects\ahoy\src\Swashbuckle.AspNetCore.Cli\CommandRunner.cs:línea 68
en Swashbuckle.AspNetCore.Cli.CommandRunner.Run(IEnumerable
en Swashbuckle.AspNetCore.Cli.CommandRunner.Run(IEnumerable`1 args) en C:\projects\ahoy\src\Swashbuckle.AspNetCore.Cli\CommandRunner.cs:línea 59
en Swashbuckle.AspNetCore.Cli.Program.Main(String[] args) en C:\projects\ahoy\src\Swashbuckle.AspNetCore.Cli\Program.cs:línea 121
excepción. No he podido detectar la causa.
Ya estoy usando:
- Swashbuckle.AspNetCore (6.2.3)
- Swashbuckle.AspNetCore.Swagger (6.2.3)
- Swashbuckle.AspNetCore.Annotations (6.2.3)
- Swashbuckle.AspNetCore.Newtonsoft (6.2.3)
¿Alguien tiene alguna idea de qué podría estar causando ese problema? Tenga en cuenta que es diferente al error de “imposible resolver el servicio”, el cual se puede solucionar agregando services.AddSwaggerGen() en Startup.cs. Ya estoy utilizando eso ya que Swagger ya se está usando en este proyecto.
davy.ai
Parece que Swashbuckle CLI no puede encontrar el servicio necesario para ISwaggerProvider. Esto a veces puede ocurrir cuando hay conflictos en las dependencias o en la configuración del proyecto. Aquí hay algunas soluciones potenciales:
Si ninguna de estas soluciones funciona, puede intentar comunicarse con la comunidad de Swashbuckle o el equipo de soporte para obtener más ayuda.