web-dev-qa-db-fra.com

Problèmes avec swagger après la migration vers .NET Core 3.0

Après la migration vers .NET Core 3.0. J'ai des problèmes pour configurer Swagger.

Voici ma configuration.

  public void ConfigureServices(IServiceCollection services)
  {       

       services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0).AddNewtonsoftJson();


       services.AddSwaggerGen(setup =>
       {
             setup.SwaggerDoc(
                "v1", 
                 new Info 
                 {  
                     Title = "Docker", 
                     Version = "v1" 
                 });
        });
  }

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
       Configuration.SwaggerOptions swaggerOptions = new Configuration.SwaggerOptions();

       _configuration.GetSection("SwaggerOptions").Bind(swaggerOptions);

       app.UseSwagger(options =>
       {
            options.RouteTemplate = swaggerOptions.JsonRoot;
       });

       app.UseSwaggerUI(options =>
       {
           options.SwaggerEndpoint(swaggerOptions.UiEndpoint, swaggerOptions.ApiDescription);
       });
}

Voici l'exception

TypeLoadException: impossible de charger le type "Microsoft.AspNetCore.Mvc.MvcJsonOptions" à partir de l'assembly "Microsoft.AspNetCore.Mvc.Formatters.Json

Y a-t-il une solution à cela?

8
boris

Il y a une discussion sur le référentiel github aspnet/AspNetCore en discutant: Restaurer MvcJsonOptions vers ASP.NET Core 3.0 en tant que type avant?

Cela suggère que le problème a été résolu.

Je suggère de vous assurer que le dernier package Swashbuckle.AspnetCore est installé: https://www.nuget.org/packages/Swashbuckle.AspNetCore/

Dans les documents de base officiels asp.net, il indique:

Install-Package Swashbuckle.AspNetCore -Version 5.0.0-rc2

https://docs.Microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-3.0&tabs=visual-studio

Je suggère donc que vous ayez besoin d'installer une version préliminaire , au moment de l'écriture, seulement 4.X est stable et 5.0.0-rc3 est le dernier.

13
Alex KeySmith

In Net Core 3.0: J'essayais de configurer le ReferenceLoopHandling et pour moi la réponse sélectionnée n'a pas fonctionné, j'ai donc trouvé cette alternative, dans les ConfigureServices veuillez ajouter:

public void ConfigureServices(IServiceCollection services)
{           
    services.AddMvc().AddNewtonsoftJson(options =>
    {
       options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
    });
}
0
dayanrr91