【发布时间】:2019-06-29 17:46:02
【问题描述】:
我有一个在 .NET 4.7.2 上运行并托管在 Azure AppService 中的 MVC 5 Web 应用程序,它使用 Azure Key Vault 来保存机密。该项目使用Microsoft.Azure.KeyVault 3.0.3 NuGet 包,并使用KeyVaultClient 和.GetSecretAsync() 访问机密。所有资源都位于同一个 Azure 区域。
在大多数情况下,这工作得很好,大约 90% 的时间它以毫秒为单位返回秘密。
但访问 Key Vault 的调用有时会失败。这不会表现为 SDK 引发的异常,但 Web 应用程序会挂起。最终——通常在 1 分钟左右,但有时更长时间——秘密被返回,一切都恢复正常。这是因为 SDK 使用重试模式,它会不断尝试获取密钥。
查看 AppService 的 Application Insights,我可以看到 SDK 生成的 GET 请求从 Key Vault 获得 HTTP 500 响应并引发 SocketException,结果代码为 ConnectFailure。
例外是:
查看遥测数据并单步执行代码,没有任何共同点或明显原因。它似乎完全是随机的。
底线是 Azure 托管的 AppService有时无法使用最新的框架和 SDK 版本连接到同一数据中心中的 Azure 托管的 Key Vault。
有其他人看过这个或有任何想法吗?我四处搜寻,发现有几个人遇到同样的问题,但没有人找到原因或解决方案。
编辑 (1):我现在尝试在另一个区域完全启动一个新的 Key Vault,但问题仍然完全相同。
【问题讨论】:
-
我建议联系 Azure 支持并要求他们调查长期依赖持续时间
-
@MartinLiversage 是的,我同意了。
标签: c# asp.net-mvc azure azure-application-insights azure-keyvault