该函数永远不会读取最新版本的秘密。它总是读取它配置使用的第一个,即版本化的。即使重新启动该功能或重新发布它后,它仍然会读取它最初配置使用的版本秘密。
创建了一个具有版本化密钥保管库参考形式的函数:
TheSecret
@Microsoft.KeyVault(SecretUri=https://name.vault.azure.net/secrets/TheSecret/__version__)
并且在函数中:
if (!int.TryParse(Environment.GetEnvironmentVariable("TheSecret"), out int theSecret))
{
theSecret = 10;
}
该函数第一次运行时会检索秘密的特定版本。
在 Key Vault 中创建了新版本的
TheSecret
并将功能应用程序配置更改为非版本化类型:
TheSecret
@Microsoft.KeyVault(SecretUri=https://name.vault.azure.net/secrets/TheSecret/)
微软推出了新功能来解决此问题。在环境变量视图中,现在有一个操作 Pull Reference Values,它执行以下操作:
这将查询 Key Vault 和应用程序配置以更新应用程序引用的任何值。您的站点将重新启动以应用新配置。
关于要尝试的事情,这里有一些;
@Microsoft.KeyVault(VaultName={vault_name};SecretName={secret_name})
如果所有这些都失败,请禁用系统 msi,重新启用并确认在密钥保管库策略中分配了秘密获取权限。 (请注意,执行此操作后,您必须停止/启动功能应用程序)