ASP.NET Core出现net::ERR_HTTP2_PROTOCOL_ERROR 206问题求助
针对net::ERR_HTTP2_PROTOCOL_ERROR 206问题的解决方案
1. 确认Nginx HTTP/2禁用配置是否真正生效
- 检查Nginx站点或主配置文件,确保
listen指令无http2参数,正确的HTTPS监听配置示例:listen 443 ssl; # 移除任何包含 http2 的监听配置,比如 listen 443 ssl http2; - 重启Nginx后,用命令行验证:
curl -v https://example.com/Img/xxx.jpg,查看输出中的HTTP版本,确认是HTTP/1.1而非HTTP/2。若仍为HTTP/2,检查Nginx错误日志,确认配置文件是否被正确加载。
2. 修复静态资源的部分请求异常
从响应头来看,请求的是文件单字节片段(32510-32510),虽数值匹配但可能触发浏览器HTTP2协议校验问题,可尝试两种配置:
- 禁止静态资源的部分请求,强制返回完整内容:
location ~* \.(js|css|jpg|jpeg|png|gif)$ { if ($http_range) { return 200; } # 保留原有root、expires等配置 } - 确保Nginx正确转发Range相关请求头至后端ASP.NET:
避免Nginx修改或丢失这些头,导致后端返回异常部分内容。proxy_set_header Range $http_range; proxy_set_header If-Range $http_if_range;
3. 清除浏览器端HTTP2连接缓存
即使Nginx禁用HTTP2,浏览器可能复用旧连接:
- 用
Ctrl+Shift+R强制刷新页面,清除缓存; - 关闭所有浏览器窗口后重启,销毁旧连接;
- 可临时在Nginx配置中添加强制关闭连接的头:
server { # 保留已有配置 add_header Connection "close"; }
4. 排查Windows Server 2012 R2系统层面干扰
Windows Server 2012 R2对HTTP2支持有限,可能存在第三方组件干扰:
- 检查服务器上的防火墙、杀毒软件或其他代理工具,这类软件可能强制启用HTTP2;
- 绕过Nginx直接访问后端ASP.NET服务器的静态资源,确认是否仍出现206状态码异常,定位问题是否在Nginx转发环节。
内容的提问来源于stack exchange,提问作者Oris Sin
相关产品推荐
相关产品推荐

