ASP.NET项目Swagger UI无法访问:Mapping not found异常求助
解决Swagger UI访问报错“Mapping not found - index/”的问题
我之前碰到过几乎一模一样的情况——改了Project Url后Swagger崩了,回滚也没用,折腾了好一会儿才搞定。你这个问题本质是修改Project Url时打乱了Swagger的路由映射,哪怕改回去,IIS Express或者项目缓存里的残留配置还在作祟,试试下面这些按优先级排序的解决办法:
1. 先重置IIS Express的站点配置
这是最容易见效的第一步:
- 先把Visual Studio彻底关掉,再去任务管理器里找到所有
iisexpress.exe进程,全部结束掉 - 找到IIS Express的配置文件夹,路径一般是
C:\Users\[你的用户名]\Documents\IISExpress\config - 删除里面的
applicationhost.config文件(放心,下次启动VS会自动重新生成这个文件) - 重新打开项目,启动后再访问Swagger试试
2. 检查SwaggerConfig.cs的路由设置有没有被误改
打开SwaggerConfig.cs,重点确认Swagger UI的路由前缀配置,确保是默认的/swagger/ui:
// 确认这部分配置没有被修改 c.EnableSwaggerUi("/swagger/ui/{*assetPath}", uiConfig => { // 这里的其他配置不用动,只要路由前缀正确就行 });
如果之前不小心改了路由前缀,改回默认值,然后执行清理解决方案(菜单→生成→清理解决方案),再重新生成项目。
3. 用正确的方式设置启动时打开Swagger
别再改Project Url了!正确的做法是:
- 打开项目属性的Web标签,把Project Url改回项目根地址(比如
http://localhost:54408/) - 在Start Action区域选择「Specific page」,输入
swagger/ui/index - 保存设置后重启项目,这样启动时会自动跳转到Swagger页面,还不会破坏路由
4. 彻底清理项目缓存
如果上面的方法都没用,就来个彻底的缓存清理:
- 右键项目→清理
- 右键项目→卸载项目,然后再右键→重新加载项目
- 手动删除项目目录下的
bin和obj文件夹 - 重新生成解决方案,再启动项目
5. 排查WebApi路由冲突
最后检查一下WebApiConfig.cs里的自定义路由,有没有和Swagger的路径冲突。比如如果有这样的路由:
config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } );
这种通配性太强的路由可能会拦截Swagger的请求,建议调整路由模板,或者给Swagger的路由设置更高的优先级。
按这个顺序试下来,基本都能解决你的问题。
内容的提问来源于stack exchange,提问作者Izi
相关产品推荐
相关产品推荐

