IIS7部署的.NET MVC5站点加载JS文件偶发net::err_http2_protocol_error报错
IIS7部署.NET MVC5站点JS加载间歇性报net::err_http2_protocol_error修复方案
该问题由IIS7原生HTTP/2实现与静态资源传输规则的兼容性冲突导致,可按以下步骤依次排查修复:
- 禁用IIS站点动态内容压缩
进入IIS管理器选中目标站点,打开【压缩】功能页,取消勾选「启用动态内容压缩」,保存配置后重启站点。
如果站点接入了CDN,同步关闭CDN侧的动态资源压缩规则,避免两端压缩逻辑冲突 - 调整HTTP/2帧大小上限
打开IIS配置编辑器,定位到system.webServer/http2节点,将maxFrameSize参数修改为16384,修改后执行iisreset命令生效。该参数默认值为4096,传输大体积JS文件时容易出现拆帧异常触发协议报错。 - 固定MVC Bundle打包规则
若使用.NET MVC5自带的Bundle静态资源打包功能,在App_Start/BundleConfig.cs中添加如下配置,避免打包逻辑动态调整导致的资源校验失败:// 强制启用打包优化,关闭动态调整 BundleTable.EnableOptimizations = true; // 未使用CDN托管静态资源时添加此行 BundleTable.Bundles.UseCdn = false; - 统一静态资源缓存头配置
在站点web.config中添加如下配置,规范静态资源缓存规则:<system.webServer> <staticContent> <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> </staticContent> </system.webServer>
临时验证方案:如果需要快速确认是否为HTTP/2兼容问题,可在IIS配置编辑器
system.webServer/http2节点将enabled设为false,强制站点使用HTTP/1.1,重启后测试是否还会出现报错。
用户端报错表现参考:
内容的提问来源于stack exchange,提问作者gray
相关产品推荐
相关产品推荐

