在升级到Visual Studio 2019 16.10.0后,React应用程序出现“Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR”错误。
在升级到Visual Studio 2019 16.10.0后,React应用程序出现“Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR”错误。
升级到VS 16.10.0(然后是16.10.1)社区版后,React网站无法在Visual Studio/IIS Express中运行。完全相同的代码刚刚部署到Azure应用服务中并且正常工作。
主页是空白的,并且在Chrome(版本91.0.4472.77(官方版本)(64位))调试器控制台中显示以下错误:
"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR"
解决方案包括:
- C#类库(.NET Core 3.1)
- C# Web API(.NET Core 3.1)
- React网站
我尝试了以下操作:
- 清理并重新构建解决方案
- 清除浏览器缓存
- 卸载并重新安装Visual Studio
- 将Visual Studio从16.10.0升级到16.10.1
- 运行npm run build,没有出现错误
附加说明:我能够恢复一个装有Visual Studio 2019 v16.9.4而不是v16.10.1的虚拟机。然后逐步安装了最新的Windows更新和完全相同的代码库。该网站在v16.9.4中正常运行。因此,问题似乎出现在Visual Studio v16.10.0/v16.10.1中。
前往VS开发者社区并为此问题投票支持
https://developercommunity.visualstudio.com/t/Failed-to-load-resource:-net::ERR_HTTP2_/1446262
最近,在将Visual Studio 2019升级到16.10.0版本后,我们的React应用程序出现了"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR"的错误。经过调查发现,只有安装了KB5003637补丁的机器才会出现这个问题。我们尝试卸载该补丁,问题解决了。最终,我们决定升级到.NET 5版本,这样就可以解决这个问题了,而且对我们的项目来说相对简单。
如果你无法升级,可以尝试禁用HTTP/2。对于.NET Core 3.1,可以在Program.cs文件中添加以下代码:
public static IHostBuilder CreateWebHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxRequestBodySize = int.MaxValue; serverOptions.Limits.MinResponseDataRate = null; serverOptions.ConfigureEndpointDefaults(lo => lo.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http1); }) .UseStartup(); });
但遗憾的是,对于我的情况,这并没有起到任何作用,请求仍然以HTTP/2的方式发送,ERR_HTTP2_PROTOCOL_ERROR错误仍然存在。我尝试将上述代码添加到Program.cs中,但仍然出现相同的错误。我还尝试卸载KB5003637补丁,但没有成功。最后,我将项目升级到.NET 5,问题解决了。
在升级到Visual Studio 2019 16.10.0后,React应用程序出现了"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR"的错误。我尝试了包括回滚更新和完全重装Windows在内的各种方法,最后微软的支持人员发布了一个临时解决方法,涉及到禁用HTTP2。这个方法对我来说似乎起效了。总结如下:
- 打开Windows注册表编辑器
- 导航到注册表键
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
- 在该注册表键中添加两个新的REG_DWORD值,
EnableHttp2Tls
和EnableHttp2Cleartext
- 将这两个值都设置为
0
- 重新启动计算机
支持人员指出:
这些注册表值禁用了计算机上的HTTP/2。当发布https.sys的修复程序时,您可以删除这些值。
这个问题的出现原因是Windows 10系统在两天前更新,并且升级了Visual Studio到16.10.1版本。在这之后,出现了加载错误、图片和CSS无法正确加载的问题。根据之前一篇帖子中SpeedOfSpin的评论指出,卸载KB5003637可以立即解决问题,现在一切都可以正常加载了。不需要回退到早期的Visual Studio版本,似乎是Windows操作系统相关的问题。
更新1:
今天有一个新的更新KB5004476,我这里不再显示之前的KB5003637了。KB5004476引起了相同的错误。安装后,我得到了完全相同的错误信息"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR",卸载后再次立即解决了问题。我在微软论坛上询问了这里发生了什么。
更新2:
由于之前的微软论坛(上面的链接)无法提供解决方案,所以同样的问题在这里被问到了。
更新3:
经过进一步测试,似乎只影响Chrome浏览器(我只使用Chrome,大多数人也是如此)。在Firefox、Edge和IE中似乎没有这个问题。这很令人困惑,因为我尝试了很多方法,唯一的解决办法仍然是卸载KB5003637或新版本KB5004476。所以我猜测Chrome确实出了问题。目前,我会继续保持未安装更新的状态,我不想更换我的首选浏览器。
更新4:
这确实不是仅限于Chrome的问题,抱歉大家。今天早上在Edge中也看到了相同的错误。在Chrome中,我每次都会遇到这个问题,而在其他浏览器中没有。
更新5:
根据ChrisP在第一篇帖子中的提问,如果你也遇到了这个问题,请到VS开发者社区,并请为这个问题投票。我也在那里提了这个问题,但目前还没有解决方案。
更新6:
两天前,在测试我的Web应用程序时,除了HTTP/2错误外,我也遇到了与人们开始提到的相同的蓝屏问题。它显示了错误信息"System Thread Exception not Handled",文件名为"HTTP.sys",然后重新启动,令人惊讶!同时,还安装了两个新的更新KB5003690和KB5003537,但没有任何改变,我仍然遇到这些烦人的错误。之前引起问题的更新KB5003637和KB5004476在这里已经消失了。对我来说,目前最简单/最快的解决方法是在Visual Studio项目的调试设置中禁用SSL(右键单击项目,属性,调试,Web服务器设置下面)。这样,我可以在本地进行测试,没有"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR"错误,没有"System Thread Exception not Handled"的BSoD!错误,最重要的是不再有压力 :)。希望这个问题能够快速解决!
更新7(已解决!):
微软终于发布了一个解决方案,这个解决方案对我来说有效,更多信息请看这里(最后一篇帖子)。安装最新的更新KB5004237在我这里解决了这个问题。不再出现"Failed to load resource: net::ERR_HTTP2_PROTOCOL_ERROR"错误,也没有出现"System Thread Exception not Handled"错误!
我卸载了KB5003637但仍然有问题。最终按照下面的建议将项目转换为.NET 5,现在可以正常工作了。但是,刷新浏览器后我确实看到了一次错误,所以还有一些不完全正确的地方。
在我遇到相同问题时,这篇文章非常有帮助。谢谢您发表这篇文章。
在我的情况下不正确,这不仅仅是Chrome的问题。我在Chrome、Edge、Firefox和IE中尝试了,无论哪个浏览器都会出现完全相同的错误。
7月的安全更新KB5004945出现了相同的问题 🙁 在安装了7月的更新后,我之前卸载的6月更新KB5003637的问题又出现了。