У меня есть метод для получения значения из KeyVault, например, так:
public async Task<string> GetSecretAsync(string secret)
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
try
{
var retrievedSecret = await keyVaultClient.GetSecretAsync($"{VaultUrl}/secrets/{secret}");
return retrievedSecret.Value;
}
catch (Exception e)
{
if (e.Message.Contains("Forbidden"))
{
throw new KeyVaultForbiddenException("Keyvault request refused");
}
else if (e.Message.Contains("NotFound"))
{
throw new KeyVaultSecretNotFoundException("Requested secret not found");
}
Trace.WriteLine($"Exception getting secret: {e.Message}");
throw e;
}
}
, который отлично работает в асинхронных методах.
Теперь я пытаюсь использовать его в синхронном методе(на самом деле конструктор) и он терпит неудачу - главная проблема в том, что я не могу поймать исключение, чтобы фактически выяснить, что не так
Вот как я пытаюсь использоватьit:
public MongoRepository(IKeyVaultService KeyVaultService)
{
this.collectionName = typeof(T).Name;
var databaseName = KeyVaultService.GetSecretAsync("mongoDatabaseName").Result;
var databaseConnectionString = KeyVaultService.GetSecretAsync("mongoDatabaseConnectionString").Result;
SetDatabase(databaseName, databaseConnectionString);
SetCollection();
}
Как только код перешагнет:
var retrievedSecret = await keyVaultClient.GetSecretAsync($"{VaultUrl}/secrets/{secret}");
Сбой, и я не могу поймать исключение.В консоли вывода я вижу следующее:
Exception thrown: 'Microsoft.Rest.TransientFaultHandling.HttpRequestWithStatusException' in Microsoft.Rest.ClientRuntime.dll
Exception thrown: 'Microsoft.Rest.TransientFaultHandling.HttpRequestWithStatusException' in mscorlib.dll
Exception thrown: 'System.Net.Sockets.SocketException' in System.dll
Exception thrown: 'System.Net.WebException' in System.dll
Exception thrown: 'System.Net.WebException' in System.dll
Exception thrown: 'System.Net.Http.HttpRequestException' in mscorlib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in Microsoft.Azure.Services.AppAuthentication.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'System.Exception' in Microsoft.Azure.Services.AppAuthentication.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in Microsoft.Azure.Services.AppAuthentication.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'System.ObjectDisposedException' in System.dll
Exception thrown: 'System.ObjectDisposedException' in System.dll
Exception thrown: 'System.ObjectDisposedException' in System.dll
Exception thrown: 'System.Exception' in mscorlib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in Microsoft.Azure.Services.AppAuthentication.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'Microsoft.Azure.Services.AppAuthentication.AzureServiceTokenProviderException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in Microsoft.IdentityModel.Clients.ActiveDirectory.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in Microsoft.IdentityModel.Clients.ActiveDirectory.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Exception thrown: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AdalSilentTokenAcquisitionException' in mscorlib.dll
Любая точка в правильном направлении была бы отличной!