C# Swagger未使用apiexplorer为Swagger.json生成版本2

C# Swagger未使用apiexplorer为Swagger.json生成版本2,c#,asp.net-core,C#,Asp.net Core,我正在使用api资源管理器将版本控制添加到我的.NET5WebAPI项目中,v1显示得很好,没有问题,但版本2不会显示在不同的控件中,而不是相同的名称或方法。我在这里使用.NET5 services.AddSwaggerGen(options => { using (var serviceProvider = services.BuildServiceProvider()) { var provider = serviceProvid

我正在使用api资源管理器将版本控制添加到我的.NET5WebAPI项目中,v1显示得很好,没有问题,但版本2不会显示在不同的控件中,而不是相同的名称或方法。我在这里使用.NET5

 services.AddSwaggerGen(options =>
 {              

   using (var serviceProvider = services.BuildServiceProvider())
   {
     var provider = serviceProvider.GetRequiredService<IApiVersionDescriptionProvider>();
     String assemblyDescription = typeof(Startup).Assembly.GetCustomAttribute<AssemblyDescriptionAttribute>().Description;

     foreach (var description in provider.ApiVersionDescriptions)
     {
        options.SwaggerDoc(description.GroupName, new Microsoft.OpenApi.Models.OpenApiInfo()
        {
            Title = $"{typeof(Startup).Assembly.GetCustomAttribute<AssemblyProductAttribute>().Product} {description.ApiVersion}",
            Version = description.ApiVersion.ToString() ,
            Description = description.IsDeprecated ? $"{assemblyDescription} - DEPRECATED" : $"{assemblyDescription}"

        });
    }
}

options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
    Description =
        "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"",
    Name = "Authorization",
    In = ParameterLocation.Header,
    Type = SecuritySchemeType.ApiKey,
    Scheme = "Bearer"
});
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
    {
        new OpenApiSecurityScheme
        {
            Reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id = "Bearer"
            },
            Scheme = "oauth2",
            Name = "Bearer",
            In = ParameterLocation.Header
        },
        new List<string>()
    }
});
var currentAssembly = Assembly.GetExecutingAssembly();
var xmlDocs = currentAssembly.GetReferencedAssemblies()
.Union(new AssemblyName[] { currentAssembly.GetName() })
.Select(a => Path.Combine(Path.GetDirectoryName(currentAssembly.Location), $"{a.Name}.xml"))
.Where(f => File.Exists(f)).ToArray();

Array.ForEach(xmlDocs, (d) =>
{
    options.IncludeXmlComments(d);
});


options.DocumentFilter<RemoveDefaultApiVersionRouteDocumentFilter>();
options.OperationFilter<RemoveQueryApiVersionParamOperationFilter>();

当swagger报告错误时,您可以查看
输出
窗口中抛出的详细异常。原因应该说得相当清楚。正如我所说的,我已经解决了这个问题,事实上我使用了json文件的url并发现了我的问题
app.UseSwagger();
var provider = app.ApplicationServices.GetService<IApiVersionDescriptionProvider>();
     
app.UseSwaggerUI(
    options =>
    {
        options.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
        // build a swagger endpoint for each discovered API version
        foreach (var description in provider.ApiVersionDescriptions)
            options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
    });
 options.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.List);