重命名.NET解决方案后Controller原有路由无法被Swagger/Blazor访问
排查与解决步骤
1. 优先检查Blazor WASM代理配置
你描述的症状和开发代理配置错误完全匹配:Postman直接请求后端地址可通,Swagger、Blazor WASM走前端代理转发后请求无法到达后端,所以后端无对应日志。
- 打开Blazor WASM项目的
proxy.conf.js或launchSettings.json中的代理配置项 - 查看是否存在匹配
/api/identity/user的精准规则,重命名解决方案后代理指向的后端端口、地址可能已失效,未同步更新 - 修正代理指向的后端地址,或删除冗余的精准匹配规则,保留通用
/api前缀代理即可
2. 清理全链路缓存解决路由冲突
因为Controller存放在独立的类库项目中,重命名解决方案可能导致旧版本程序集残留引发路由冲突:
- 手动删除主解决方案、独立接口服务项目下所有的
bin、obj文件夹 - 执行命令
dotnet nuget locals all --clear清空本地NuGet缓存,避免引用到旧版本的接口服务程序集 - 全量重新生成解决方案后测试
3. 排查前端缓存与Swagger注册问题
- 用浏览器无痕模式访问Swagger,或清空浏览器全部缓存后测试,排除静态资源缓存问题
- 直接访问后端OpenAPI定义地址(通常为
/swagger/v1/swagger.json),搜索是否存在api/identity/user路径定义:- 如果不存在,全局搜索整个解决方案中所有
[Route]特性的使用,排查是否有其他Controller重复占用了api/identity/user路由 - 如果存在,确认是前端缓存导致,清理缓存即可恢复
- 如果不存在,全局搜索整个解决方案中所有
4. 检查中间件拦截规则
检查Program.cs/Startup.cs中注册的中间件,是否存在URL重写、请求过滤类的中间件,配置了匹配api/identity/user路径的规则,拦截了来自浏览器域的请求,仅放行Postman的请求。
内容的提问来源于stack exchange,提问作者Taladan
相关产品推荐
相关产品推荐

