ASP.NET MVC网站/user-management路由Chrome/Edge失效,Firefox正常求排查
ASP.NET MVC路由ERR_HTTP2_PROTOCOL_ERROR排查思路
问题场景
使用ASP.NET MVC开发的网站,本地环境运行正常,但部署到开发环境后出现以下异常:
/usermanagement、/user-management路由在Chrome/Edge中报ERR_HTTP2_PROTOCOL_ERROR,仅Firefox可正常访问;/administration/user-management路由在所有浏览器中均可正常访问;- Chrome/Edge访问异常路由时会跳转到
chrome-error://chromewebdata/,控制台显示警告crbug/1173575, non-JS module files deprecated.,网站其他页面无异常。
控制器路由定义如下:
[Route("administration/user-management")] [Route("user-management")] public ActionResult Index() { return View(); }
排查思路
1. 排查HTTP/2协议相关配置
- 临时禁用开发环境Web服务器(IIS/Nginx等)的HTTP/2协议,切换为HTTP/1.1测试,验证是否是HTTP/2协议兼容性问题;
- 查看服务器日志中对应请求的错误详情,重点关注HTTP/2帧传输异常、超时或资源加载失败的记录。
2. 检查路由冲突与URL重写规则
- 排查开发环境的URL重写模块(如IIS URL Rewrite),确认是否存在针对
/user-management或/usermanagement的特殊重定向/重写规则,导致Chrome/Edge处理异常; - 检查是否有区域路由、同名路由或全局路由规则与控制器属性路由存在优先级冲突,可在本地模拟开发环境路由配置尝试复现问题。
3. 静态资源与页面加载异常排查
- 对比Firefox和Chrome/Edge的Network请求日志:在Firefox中记录
/user-management页面加载的所有资源(CSS/JS/字体等),在Chrome/Edge中直接访问这些资源,排查是否存在资源加载失败的情况; - 针对控制台的
non-JS module files deprecated警告,临时移除页面中的第三方资源或自定义模块引入,逐步排查是否是模块文件在Chrome/Edge的HTTP/2环境下解析异常导致页面中断。
4. 浏览器缓存与代理问题
- 清除Chrome/Edge的所有缓存(包括HTTP缓存、Service Worker缓存),使用无痕模式测试,排除缓存影响;
- 若开发环境存在反向代理(如Nginx、Cloudflare),尝试绕过代理直接访问服务器IP+端口的目标路由,验证是否是代理服务器的HTTP/2配置兼容性问题。
5. ASP.NET MVC路由配置细节
- 调整控制器属性路由的优先级,明确路由顺序:
[Route("user-management", Order = 1)] [Route("administration/user-management", Order = 2)] public ActionResult Index() { return View(); } - 检查全局路由注册文件(如
RouteConfig.cs),确认是否存在覆盖控制器属性路由的规则。
内容的提问来源于stack exchange,提问作者Patrick Yu
相关产品推荐
相关产品推荐

