如何配置.NET API入口直接跳转至Swagger文档
实现根路径跳转至Swagger文档页面的配置方法
当然可以实现,有两种常用方案供你选择:
方案一:直接将Swagger UI挂载到根路径
通过设置Swagger UI的路由前缀为空,让用户访问localhost:port/时直接加载Swagger页面,地址栏不会发生跳转。
在配置Swagger UI中间件时添加RoutePrefix = string.Empty:
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Demo v1"); c.RoutePrefix = string.Empty; // 将Swagger UI部署到根路径 });
方案二:根路径302重定向到Swagger页面
如果希望保留Swagger的默认路径(/swagger),可以给根路径添加重定向规则,用户访问localhost:port/时会跳转到Swagger页面,地址栏会显示/swagger后缀。
在Swagger中间件配置完成后添加以下代码:
app.MapGet("/", context => { return context.Response.Redirect("/swagger"); });
完整示例代码(结合你的原有配置)
using System.Reflection; using Microsoft.OpenApi.Models; var builder = WebApplication.CreateBuilder(args); // 你的原有Swagger服务配置 builder.Services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Demo", Version = "v1", Description = "This is a demo api" }); var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); }); builder.Services.AddControllers(); var app = builder.Build(); // 建议仅在开发环境启用Swagger if (app.Environment.IsDevelopment()) { app.UseSwagger(); // 选择其中一种方案即可 // 方案一:挂载到根路径 app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Demo v1"); c.RoutePrefix = string.Empty; }); // 方案二:根路径重定向 // app.MapGet("/", context => context.Response.Redirect("/swagger")); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();
内容的提问来源于stack exchange,提问作者Sachihiro
相关产品推荐
相关产品推荐

