我已经实现了 TimeTriggerC# Azure 函数来运行存储过程以插入使用列加密加密的表(始终加密,AzureKey Vault 作为提供者)
对我来说,阻塞区域是我的函数 1 次成功运行,但又多次出错。所以我把成功之路作为一个罕见的案例
我面临的错误是
mscorlib:调用的目标已引发异常。System.Data:不能多次设置密钥存储提供程序。
我对此进行了一些调查它发生在行中
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
在函数中
static void InitializeAzureKeyVaultProvider()
{
string clientId = ConfigurationManager.AppSettings["AuthClientId"];
string clientSecret = ConfigurationManager.AppSettings["AuthClientSecret"];
_clientCredential = new ClientCredential(clientId, clientSecret);
// Direct the provider to the authentication delegate
SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);
Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>();
providers.Add(SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider);
// register the provider with ADO.net
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
}
当我试图更深入地研究错误的根本原因时,它会像
调用的目标已引发异常。---> System.InvalidOperationException : 密钥库提供程序不能设置多次。在 System.Data.SqlClient.SqlConnection.RegisterColumnEncryptionKeyStoreProviders(IDictionary`2 customProviders)
正如我上面提到的,我使用Azure Key Vault作为我的 Key Store Provider。我使用 AD 正确注册了我的 Keyvault,并将注册的应用程序添加到我的密钥库(访问策略)。
为什么我会面临这种异常行为,比如一次成功,一次失败?
感谢您的回应,
杰恩德兰