解决.NET更新Azure Key Vault密钥过期日期时的Version参数空值错误
解决Azure Key Vault更新Secret过期日期时的"Version cannot be null"错误
错误原因:直接通过new SecretProperties(secretName)实例化的对象不包含版本信息,而UpdateSecretProperties方法要求必须指定Secret的版本(Key Vault中Secret是版本化存储的,更新操作需针对特定版本),且Version字段为只读,无法直接赋值。
修正方案:先获取目标Secret的现有属性(包含版本信息),再修改过期时间后执行更新:
var credential = new ClientSecretCredential(_configuration[Constants.AZURE_TENANT_ID], _configuration[Constants.AZURE_CLIENT_ID], _configuration[Constants.AZURE_CLIENT_SECRET]); var client = new SecretClient(new Uri(_configuration[Constants.KEY_VAULT_URL_UAT]), credential); // 获取目标Secret的最新版本属性(若需指定特定版本,可传入第二个参数version) var secret = await client.GetSecretAsync(secretName); var secretProperties = secret.Value.Properties; // 设置新的过期时间 secretProperties.ExpiresOn = DateTimeOffset.Now.AddYears(2); // 执行更新操作 await client.UpdateSecretPropertiesAsync(secretProperties);
补充说明:
GetSecretAsync返回的Secret实例包含完整的元数据(包括Version),以此为基础修改属性后,调用更新方法就能满足版本参数的要求。- 若需更新该Secret的所有版本,需遍历所有版本列表,逐个获取属性并执行更新操作,常规场景下仅需更新最新版本即可。
内容的提问来源于stack exchange,提问作者Afsar AF撒入
相关产品推荐
相关产品推荐

