You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET 6极简API中通过代码配置Swagger替代配置文件?

实现方案

1. 对齐Swagger UI访问路径(匹配launchUrl: "swagger")

现有代码里的app.UseSwaggerUI()默认就用/swagger作为访问路径,已经和launchSettings的配置一致。如果要显式确认配置,可以修改为:

app.UseSwaggerUI(options =>
{
    options.RoutePrefix = "swagger"; // 显式指定路径,确保和launchUrl完全匹配
});

2. 代码配置双端口(对应applicationUrl)

launchSettings里的端口配置是通过配置文件生效的,如果你想完全用C#代码控制端口而不依赖配置文件,可以在构建WebApplication时配置Kestrel:

var builder = WebApplication.CreateBuilder(args);

// 配置Kestrel监听指定的HTTP和HTTPS端口
builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.ListenLocalhost(5285, o => o.UseHttp());
    serverOptions.ListenLocalhost(7087, o => o.UseHttps());
});

要是想保持和launchSettings.json的配置同步(读取配置文件里的端口值),可以这么写:

var applicationUrl = builder.Configuration["ASPNETCORE_URLS"] ?? "https://localhost:7087;http://localhost:5285";
builder.WebHost.UseUrls(applicationUrl);

3. 保持仅开发环境启用Swagger(已符合要求)

现有代码已经通过if (app.Environment.IsDevelopment())判断,只在开发环境开启Swagger和SwaggerUI,和launchSettings里的ASPNETCORE_ENVIRONMENT: "Development"完全匹配,这部分无需修改。

修改后的完整Program.cs代码

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // 可选:代码配置端口(替换launchSettings的applicationUrl)
        builder.WebHost.ConfigureKestrel(serverOptions =>
        {
            serverOptions.ListenLocalhost(5285, o => o.UseHttp());
            serverOptions.ListenLocalhost(7087, o => o.UseHttps());
        });

        // 或者读取配置文件中的端口(和launchSettings保持一致)
        // var applicationUrl = builder.Configuration["ASPNETCORE_URLS"] ?? "https://localhost:7087;http://localhost:5285";
        // builder.WebHost.UseUrls(applicationUrl);

        builder.Services.AddAuthorization();

        builder.Services.AddEndpointsApiExplorer();
        builder.Services.AddSwaggerGen();

        var app = builder.Build();

        if (app.Environment.IsDevelopment())
        {
            app.UseSwagger();
            // 显式配置Swagger UI路径,对齐launchUrl
            app.UseSwaggerUI(options =>
            {
                options.RoutePrefix = "swagger";
            });
        }

        app.UseHttpsRedirection();
        app.UseAuthorization();

        var summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        app.MapGet("/weatherforecast", (HttpContext httpContext) =>
        {
            var forecast = Enumerable.Range(1, 5).Select(index =>
                new WeatherForecast
                {
                    Date = DateTime.Now.AddDays(index),
                    TemperatureC = Random.Shared.Next(-20, 55),
                    Summary = summaries[Random.Shared.Next(summaries.Length)]
                })
                .ToArray();
            return forecast;
        })
        .WithName("GetWeatherForecast");

        app.Run();
    }
}

补充说明

  • 关于端口:如果不修改代码,launchSettings.json里的applicationUrl会自动生效,代码配置是可选操作,适合需要动态指定端口的场景。
  • Swagger路径:默认就是/swagger,显式配置是为了明确和launchSettings的配置对齐,避免后续修改出现偏差。

内容的提问来源于stack exchange,提问作者ashlar64

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:50:36