Jim*_*eil 5 azure azure-keyvault
我正在使用 2.3.2 Microsoft.Azure.KeyVault NuGet 中的 KeyVaultClient。使用 GetSecretAsync(,),我注意到如果我尝试访问一个不存在的秘密会引发 KeyVaultErrorException。
不幸的是,当对密钥库的访问被拒绝或找不到密钥库端点时,也会引发相同的错误。
我目前看到的唯一区别是 Message 属性。那么检测未找到秘密的正确方法是什么?为什么这会引发异常而不是返回 null 或其他一些“空”对象?
询问不存在的秘密:
System.AggregateException occurred
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
Inner Exception 1:
KeyVaultErrorException: Secret not found: secret22222
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Code = "SecretNotFound"
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Message = "Secret not found: secret22222"
Run Code Online (Sandbox Code Playgroud)
没有阅读秘密的权利:
System.AggregateException occurred
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
Inner Exception 1:
KeyVaultErrorException: Access denied
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Code = "Forbidden"
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Message = "Access denied"
Run Code Online (Sandbox Code Playgroud)
尝试读取禁用的秘密:
System.AggregateException occurred
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
Inner Exception 1:
KeyVaultErrorException: Operation get is not allowed on a disabled secret.
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Code = "Forbidden"
((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
.Body.Error.Message = "Operation get is not allowed on a disabled secret."
Run Code Online (Sandbox Code Playgroud)
无效的保管库端点:
System.AggregateException occurred
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
Inner Exception 1:
HttpRequestException: An error occurred while sending the request.
Inner Exception 2:
WebException: The remote name could not be resolved: 'alicezzzzzz.vault.azure.net'
Run Code Online (Sandbox Code Playgroud)
对我来说看起来没那么糟糕。如果您期望出现强错误类型,我认为这种情况不会发生,因为 SDK 只是轻量级 REST 包装器,可能(部分?)由AutoRest生成- 没有明显提及,但仍然在 NuGet 项目描述中提及:) (项目现场)。
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |