【发布时间】: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