【问题标题】:Swagger/Swashbuckle error - Unable to render this definitionSwagger/Swashbuckle 错误 - 无法呈现此定义
【发布时间】:2025-08-22 04:10:02
【问题描述】:

.Netcore 2.2 Swashbuckle 4.0.1

Swagger UI 在 localhost 上工作,但在部署到 Azure ASE 到由应用程序网关管理的站点后,swagger 将不会加载。 (确认 swagger.json 已生成)。错误是.....

无法呈现此定义 提供的定义未指定有效的版本字段。

请指明有效的 Swagger 或 OpenAPI 版本字段。支持的版本字段是 swagger: "2.0" 和那些匹配 openapi: 3.0.n 的(例如,openapi: 3.0.0)。

我浏览了其他类似的帖子并尝试了其他建议,但没有解决方案。这是启动时的适用代码。

            app.UseStaticFiles();

        if (env.IsDevelopment())
        {
            app.UseSwagger(c =>
            {
                c.RouteTemplate = "swagger/{documentName}/swagger.json";

            });
        }
        else
        {

            app.UseSwagger(c =>
            {
                c.RouteTemplate = "swagger/{documentName}/swagger.json";

                c.PreSerializeFilters.Add((doc, request) =>
                {
                    var root = request.Host.Value;
                    doc.Host = root;

                });
            });
        }
        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
        // specifying the Swagger JSON endpoint.
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "TestSwagger Api V1");
            c.RoutePrefix = string.Empty;
        });


        app.UseMvc();


/* from ConfigureServices */

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

【问题讨论】:

  • 您是否设法解决了这个问题。我们遇到了类似的问题。
  • 我不是,但我确实提取了代码,看起来有一些包问题,也许是测试版?那些。如果我有时间,我会降级一些并重建,看看它是否修复。

标签: swashbuckle azure-app-service-envrmnt .net-core-2.2


【解决方案1】:

我们遇到了类似的问题,发现我们有各种版本的 swashbuckle nuget 包,一旦我们合并,它就可以工作了。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center