.NET Framework 4.7.2 Web API集成Swagger遇404路由错误求助
解决思路
针对你遇到的Swagger访问404问题,可按以下步骤排查:
修正Swagger UI访问地址
默认情况下,Swashbuckle生成的Swagger UI访问路径并非/index.html?url=//swagger.json,不同版本路径有差异:- 旧版Swashbuckle:
http://localhost:39536/swagger/ui/index - 适配.NET Framework的新版Swashbuckle:
http://localhost:39536/swagger
先尝试访问上述标准路径,确认是否能正常加载UI。
- 旧版Swashbuckle:
调整路由注册顺序与忽略规则
MVC的默认路由可能拦截Swagger相关请求,需做两处修改:- 在
Global.asax的Application_Start方法中,调整注册顺序:protected void Application_Start() { // 先注册Web API配置 GlobalConfiguration.Configure(WebApiConfig.Register); // 再注册Swagger SwaggerConfig.Register(); // 最后注册MVC路由 RouteConfig.RegisterRoutes(RouteTable.Routes); } - 在
RouteConfig的RegisterRoutes方法中,添加忽略Swagger路径的规则:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 添加此行,避免MVC路由匹配Swagger请求 routes.IgnoreRoute("swagger/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
- 在
验证swagger.json的可访问性
Swagger UI依赖正确的swagger.json文件,默认路径为http://localhost:39536/swagger/v1/swagger.json,直接访问该地址确认是否能返回JSON内容。若返回404,需检查SwaggerConfig配置是否正确,确保项目中存在可被Swagger扫描的Web API控制器。检查Swashbuckle NuGet包版本
确保安装的Swashbuckle版本适配.NET Framework 4.7.2,版本不匹配可能导致路径或配置失效,建议使用官方推荐的兼容版本。
内容的提问来源于stack exchange,提问作者Doraemon
相关产品推荐
相关产品推荐

