启用 http2 的 Blazor 服务器端应用程序会导致某些客户端出现异常

问题描述 投票:0回答:1

切换到 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 blazor azure-web-app-service blazor-server-side http2
1个回答
0
投票

您遇到的问题是客户端和 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
,请参阅下文:-

enter image description here

在配置设置中启用 Http 版本 2.0,如下所示:-

enter image description here

启用 Http 版本 2.0 后,我能够成功浏览 Blazor 应用程序,如下所示。

enter image description here

我的 Azure Web 应用程序:-

enter image description here

浏览器 - Edge - 118.0.2088.61(官方版本)(64 位) 客户端操作系统- Windows

此外,请检查您在 Web 应用程序中使用 HTTP 2.0 时是否没有任何公司或防火墙限制。

为了解决此错误,您可以访问 >

Diagnose and solve problems
选项卡并查找有关此错误代码的见解:-

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.