为什么 AzureSearch SDK 会因传输连接问题而自发失败?

Dea*_*naD 6 azure-cognitive-search azure-search-.net-sdk

昨天我们非常兴奋。我们的两个使用 AzureSearch 的 SDK 的 Web 应用程序(已部署和至少 3 个月未受影响)在不同时间(一个清晨;另一个在晚上)停止工作。indexClient.Documents.Search 方法开始失败并出现以下错误:

与 XXXXsearch.search.windows.net(#435)的 HTTPS 握手失败。System.IO.IOException 无法从传输连接读取数据:远程主机强制关闭现有连接。< 现有连接被远程主机强行关闭

在疯狂的谷歌争夺之后,我们在修复它的搜索之前添加了这 3 行。

            const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
            const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
            ServicePointManager.SecurityProtocol = Tls12;
Run Code Online (Sandbox Code Playgroud)

我所能想象的只是我们错过了某种“AzureSDK 正在改变”电子邮件?这非常糟糕,我们很幸运能够快速解决问题,否则它可能是一场灾难。有谁知道为什么会发生这种情况?

Lia*_*SFT 7

我是 Azure 认知搜索工程团队的项目经理。首先,我很遗憾听到您和其他人由于最新的服务更新删除了对 TLS 1.0 和 1.1 的支持而遇到客户端连接问题。这些类型的更改很少见,我们努力在任何更新中都不会破坏客户代码。在这种情况下,帮助保护通过 Internet 通信的信息的隐私至关重要。TLS 1.2 是一个标准,它提供了对以前版本的安全改进。您可以在此处了解更多信息。

可以在此处找到有关如何解决此问题的更多信息。我们强烈建议您避免对 TLS 版本进行硬编码(如上所述),因为 TLS 1.2 最终将被最新发布的标准 TLS 1.3 取代,后者速度更快且安全性更高。最好让 .NET 或操作系统为您选择 TLS 版本,但以上链接中对此进行了更多讨论。

我们在 1 月初就门户即将发生的这一变化发送了通知,但我们意识到很容易错过这些变化,并为随后引起的问题道歉。请知道我们想尽我们所能提供帮助。由于我们被要求不要使用 StackOverflow 来帮助解决个别支持案例,如果您需要有关您的服务的个别帮助,我们会要求您打开一个支持案例