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

VS2019(.NET 3.1)中Swagger UI加载异常及API报错求助

Swagger UI配置故障排查(.NET 3.1 + VS2019 16.11.21)

问题概述

  • 本地环境(VS2019 16.11.25 + .NET 5.0):默认Web API模板自带Swagger,可正常显示UI
  • 公司环境(VS2019 16.11.21 + .NET 3.1):默认模板无Swagger,运行仅返回JSON格式;安装Swashuckle.AspNetCore 6.5.0后配置出现异常:
    • 初始配置后仍显示JSON格式
    • 设置启动URL为swagger后,Swagger首页加载但提示Failed to Load API(500错误),错误信息提及应用池冲突,且URL重定向后丢失swagger路径

错误配置分析

你的Configure方法存在嵌套调用语法错误,导致Swagger UI配置未生效:

// 错误写法:嵌套调用UseSwaggerUI,且缺少闭合括号
app.UseSwaggerUI(c => app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CreateAPIPRactice v1");

解决方案

1. 修正Startup.cs配置

ConfigureServices(保持现有正确配置)

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "CreateAPIPRactice", Version = "v1" });
    });
}

Configure(修复语法错误并完善中间件顺序)

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        // 启用Swagger JSON端点
        app.UseSwagger();
        // 配置Swagger UI(正确写法,无嵌套)
        app.UseSwaggerUI(c =>
        {
            // 指定Swagger元数据文件路径
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "CreateAPIPRactice v1");
            // 若需根路径访问UI,保留此配置;否则删除,默认通过/swagger访问
            // c.RoutePrefix = string.Empty;
        });
    }

    // 必须添加的中间件(顺序不能错)
    app.UseRouting();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

2. 解决应用池冲突提示

错误提示并非实际多应用问题,而是路由冲突:

  • 当设置c.RoutePrefix = ""时,Swagger的index.html会占用根路径,导致API路由与Swagger路由冲突
  • 建议保留默认路由前缀(即删除c.RoutePrefix = string.Empty),通过localhost:44350/swagger访问UI,可避免重定向问题

3. 修正launchsettings.json

确保启动URL指向正确路径:

"profiles": {
  "IIS Express": {
    "commandName": "IISExpress",
    "launchBrowser": true,
    "launchUrl": "swagger",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
    }
  }
}

4. 验证依赖兼容性

.NET 3.1推荐使用Swashuckle.AspNetCore 5.6.3版本(更稳定兼容),若6.x版本仍有问题,可降级安装:

Install-Package Swashuckle.AspNetCore -Version 5.6.3

验证步骤

  1. 清理解决方案(Build → Clean Solution)
  2. 重新生成项目(Build → Rebuild Solution)
  3. 启动项目,访问localhost:44350/swagger确认UI正常加载API文档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:27:25