切换到 http2 时,某些客户端会失败,但在作为应用服务托管在 Azure 中的 Blazor 服务器应用程序上使用 http1.1 可以完美地工作。
IOException: The response ended prematurely while waiting for the next frame from the server.
o System.Net.Http.Http2Connection.<ReadFrameAsync>g__ThrowMissingFrame|69_1()
o System.Net.Http.Http2Connection.ReadFrameAsync(bool initialFrame)
o System.Threading.Tasks.ValueTask<TResult>.get_Result()o System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable<TResult>+ConfiguredValueTaskAwaiter.GetResult()
o System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()
我不知道是什么原因造成的。特别是因为它适用于某些客户/用户,但不适用于其他客户/用户。
我也不明白该设置的评论意味着什么:
选择 HTTP 2.0 版本时,必须忽略传入的客户端证书。
这是我们需要处理的事情还是应该由 Blazor 来完成?
谢谢
您遇到的问题是客户端和 Azure 应用服务端的暂时性问题,请尝试再次在 Azure 应用服务中重新部署您的 Blazor 应用程序,然后检查问题是否仍然存在。
HTTP/2 是对 HTTP/1.1 的重大修改,通过减少响应时间来提高在线速度。为了提高用户体验,HTTP/2 保留了 HTTP/1.1 中熟悉的 HTTP 方法、状态码和语义。 尽管 HTTP/2 设计为同时支持 HTTP 和 HTTPS,但许多客户端 Web 浏览器仅通过传输层安全性 (TLS) 支持 HTTP/2。 请查看此 github 文档 以了解更多信息Http 2.0 支持 Http 2.0 的浏览器版本。
另外,以下错误:-
"When selecting HTTP version 2.0, incoming client certificates must be ignored,"
表示启用 HTTP/2 时不使用客户端证书进行身份验证。这是您必须在应用程序代码中解决的问题。某些客户端可能与 HTTP/2 不兼容并导致该问题。您可以禁用 HTTP/2 以检查问题是否消失。
我尝试部署一个
Blazor Web app in Azure Web app
和enabled HTTP 2.0 I was able to browse it successfully
,请参阅下文:-
在配置设置中启用 Http 版本 2.0,如下所示:-
启用 Http 版本 2.0 后,我能够成功浏览 Blazor 应用程序,如下所示。
我的 Azure Web 应用程序:-
浏览器 - Edge - 118.0.2088.61(官方版本)(64 位) 客户端操作系统- Windows
此外,请检查您在 Web 应用程序中使用 HTTP 2.0 时是否没有任何公司或防火墙限制。
为了解决此错误,您可以访问 >
Diagnose and solve problems
选项卡并查找有关此错误代码的见解:-