【问题标题】:KeyVaultSecretsRepository vaultUri ArgumentExceptionKeyVaultSecretsRepository vaultUri ArgumentException
【发布时间】:2021-12-30 09:04:26
【问题描述】:

在将 azure function 应用程序本地升级到 dotnet 6 2 次成功后,升级部署在 Azure 中的 PR 时都失败并出现相同的错误。

vaultUri ArgumentException
at Microsoft.Azure.WebJobs.Script.WebHost.KeyVaultSecretsRepository..ctor (Microsoft.Azure.WebJobs.Script.WebHost, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null: D:\a\1\s\src\WebJobs.Script.WebHost\Security\KeyManagement\KeyVaultSecretsRepository.cs:38)

.net 版本从核心 3 变为 6(未隔离),功能从 v3 变为 v4。我们在 Azure Devops 中使用 ARM 模板进行部署,除了提高 dotnet、函数和 NuGet 的版本以及修复一些代码警告之外,没有其他更改。

查看.net source code 失败

Uri keyVaultUri = string.IsNullOrEmpty(vaultUri) ? throw new ArgumentException(nameof(vaultUri)) : new Uri(vaultUri);

【问题讨论】:

    标签: .net azure azure-functions azure-keyvault


    【解决方案1】:

    通过Microsoft.Azure.WebJobs.Script.WebHost.DefaultSecretManagerProvider的微软源代码,我们可以发现它正在创建一个KeyVaultSecretsRepository的新实例,并将环境名称public const string AzureWebJobsSecretStorageKeyVaultUri = "AzureWebJobsSecretStorageKeyVaultUri";下的valtUri传递给它

    您可以将带有 Vault URI 的“AzureWebJobsSecretStorageKeyVaultUri”配置密钥添加到您的应用配置中,这将使其正常工作。

    【讨论】:

    • 这对我帮助很大,谢谢 :)
    【解决方案2】:

    您可能将应用程序设置“AzureWebJobsSecretStorageType”设置为“keyvault”? (将您的功能键存储在密钥库中而不是存储中)

    看起来 (sinds .net6) 您现在必须使用您的密钥保管库 URL 添加应用程序设置“AzureWebJobsSecretStorageKeyVaultUri”,而不是使用您的密钥保管库名称添加“AzureWebJobsSecretStorageKeyVaultName”。

    您可以删除“AzureWebJobsSecretStorageKeyVaultName”设置...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      • 2017-04-23
      • 2015-10-19
      • 2018-11-11
      相关资源
      最近更新 更多