从 Blazor Web 程序集迁移到 Azure 上的 Blazor Web 应用程序

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

我正在尝试将应用程序从 Blazor .NET 7 Web 程序集更新为具有交互式服务器渲染的 Blazor on .NET 8.0 Web 应用程序。在 razor 页面上的 Web 程序集中,我对服务器端 Web API 控制器进行了很多

HttpClient
调用。

我最终设法使这些调用在 Blazor 交互式服务器上运行(Blazor 服务器页面在服务器 Web API 控制器上进行 http 调用),但是当我将它们上传到 Azure 站点时,出现以下错误:

System.Net.Http.HttpRequestException:无法建立 SSL 连接,请参阅内部异常。

System.Security.Authentication.AuthenticationException:身份验证失败,因为远程方发送了 TLS 警报:“ProtocolVersion”。

System.ComponentModel.Win32Exception (0x80090326):收到的消息意外或格式错误。
--- 内部异常堆栈跟踪结束 ---
在 System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](布尔 receiveFirst,Byte[] reAuthenticationData,CancellationToken CancelToken)
在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions、HttpRequestMessage 请求、布尔异步、流流、CancellationToken CancellationToken)

当然,代码和 azure 配置上的 Tls 协议版本 1.2..

有什么线索吗?

谢谢

c# azure blazor migration .net-8.0
1个回答
0
投票

如果异常确实准确,则您的问题与两个组件之间的通信中使用的 TLS 协议版本有关。

您在 Azure 门户中提到的 TLS 版本配置是“最低传入 TLS 版本”,它实际上不会影响传出版本,我建议您尝试在代码中强制使用 TLS 协议版本,看看是否可以解决了问题。

您只需创建一个在创建

HttpClientHandler
客户端时使用的
HttpClient

var handler = new HttpClientHandler
{
    // You can either accept both 1.2 and 1.3 or try with either one to see
    // if this fixes the issue.
    SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13
};
var client = new HttpClient(handler);
© www.soinside.com 2019 - 2024. All rights reserved.