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

.NET Framework 4.8中Swagger无swagger.json链接及404问题求助

.NET Framework 4.8 Web API 解决 Swagger.json 404 问题

关键配置修正步骤

1. 确认Swashbuckle包版本

卸载所有Swashbuckle.AspNetCore相关包,安装适配.NET Framework的Swashbuckle.WebApi NuGet包(推荐5.x版本)。

2. 调整SwaggerConfig.cs配置

确保Swagger文档注册逻辑正确,指定版本和路由根路径:

using Swashbuckle.Application;
using System.Web.Http;

public class SwaggerConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.EnableSwagger(c =>
        {
            // 定义API版本与名称
            c.SingleApiVersion("v1", "你的API项目名称");
            // 适配虚拟目录场景的根路径配置
            c.RootUrl(req => 
                req.RequestUri.GetLeftPart(UriPartial.Authority) 
                + req.GetRequestContext().VirtualPathRoot.TrimEnd('/'));
            // 可选:启用XML注释(需先在项目属性中开启生成XML文档)
            // c.IncludeXmlComments($@"{AppDomain.CurrentDomain.BaseDirectory}\bin\你的项目名称.XML");
        })
        .EnableSwaggerUi(); // 启用Swagger UI
    }
}

3. 检查WebApiConfig.cs路由

确保WebAPI路由和Swagger配置正确关联:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // 启用属性路由
        config.MapHttpAttributeRoutes();

        // 默认API路由
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // 注册Swagger配置
        SwaggerConfig.Register(config);
    }
}

4. 验证Global.asax初始化

确认Application_Start中正确初始化WebAPI:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

正确访问路径

配置完成后,swagger.json的正确访问路径为:

  • http://你的域名/docs/v1
    Swagger UI访问路径为:
  • http://你的域名/swagger/ui

额外排查点

  • 若部署在IIS虚拟目录下,检查RootUrl配置是否正确获取虚拟路径,避免路由错位。
  • 排查自定义路由或全局过滤器是否拦截了/docs/*、/swagger/ui/*路径。
  • 若启用了XML注释,确认项目编译时已生成对应XML文件,且路径配置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:45:52