.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
相关产品推荐
相关产品推荐

