Entity framework core 使用keyvault中的连接字符串运行dotnet EF迁移时出现Azure devops管道错误

Entity framework core 使用keyvault中的连接字符串运行dotnet EF迁移时出现Azure devops管道错误,entity-framework-core,azure-keyvault,azure-cli,azure-authentication,Entity Framework Core,Azure Keyvault,Azure Cli,Azure Authentication,这里有很多类似于我的问题,但似乎没有一个能帮助解决这个问题,因此出现了一个新问题。 我正在连接一个密钥库,该密钥库使用Program.cs文件中.net web api应用程序中的以下代码返回db连接字符串 var kVUri=$”https://{config[“azureKeyVault:vault”]}.vault.azure.net/”; var azureServiceTokenProvider=新azureServiceTokenProvider(); var keyVaultCli

这里有很多类似于我的问题,但似乎没有一个能帮助解决这个问题,因此出现了一个新问题。 我正在连接一个密钥库,该密钥库使用Program.cs文件中.net web api应用程序中的以下代码返回db连接字符串

var kVUri=$”https://{config[“azureKeyVault:vault”]}.vault.azure.net/”;
var azureServiceTokenProvider=新azureServiceTokenProvider();
var keyVaultClient=新的keyVaultClient(
新建KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback)
);
AddAzureKeyVault(kVUri、KeyVault客户端、新的DefaultKeyVault secretManager());
上面的代码在本地运行得很好,因为我可以访问keyvault,但是当将代码部署到构建时,dotnet ef迁移的任务失败了。 这是一个cmdline任务,运行“dotnet ef迁移脚本…” 错误为“Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException:参数:连接字符串:[未指定连接字符串]”

我已确保在应用程序服务中打开MI,在AD中有应用程序注册,并且此服务已被授予密钥保管库的权限,管道运行的服务连接也具有保管库的权限

当使用clientId和secret连接到keyvault时,EF迁移通常会运行。 我读到我需要添加RunAs=app,但这似乎是如果我使用cli调用servicetokenprovider,在本例中,我不是,如果它确实需要进入管道,不确定它需要去哪里


非常感谢您的帮助。

从评论中总结,供其他社区参考:


在通过服务主体身份验证的Az CLI会话中运行该命令,应为该服务主体分配对keyvault的访问权限。

您需要在通过有权访问您的keyvault的服务主体身份验证的Az CLI会话中运行该命令。感谢@DanielMann,我添加了Az CLI任务,这已经奏效了。