Azure Key Vault, das vor Build () in .NET 6 Container App nicht zugänglich ist
Posted: 27 Feb 2025, 02:16
Setup < /strong> < /p>
Ich führe eine .NET 6 -Web -App in einer Azure -Container -App aus und greift auf Azure -Schlüsselverluder für Geheimnisse und Verbindungsstaaten zu. Build () (sogar aus dem Programm.cs). Der Aufruf von SecretClient.getSecret (Keyname) fällt an diesem Punkt fehl. />
Was habe ich versucht,
zu versuchte. /> Bestätigung der Berechtigungen der wichtigsten Gewölbe (es funktioniert später, daher sollten die Berechtigungen nicht das Problem sein) < /li>
< /ul>
Frage < /strong> < /p> < /> Wie kann ich ein besseres Muster für das Aufrufen von BURS (). /> Einblicke wären sehr geschätzt!
update [/b]
Ich habe versucht, den Schlüsselgewölbe in die Konfiguration hinzuzufügen, und funktioniert in meiner Azure -Container -App nicht (funktioniert jedoch local). Anbieter. < /p>
Ich führe eine .NET 6 -Web -App in einer Azure -Container -App aus und greift auf Azure -Schlüsselverluder für Geheimnisse und Verbindungsstaaten zu. Build () (sogar aus dem Programm.cs). Der Aufruf von SecretClient.getSecret (Keyname) fällt an diesem Punkt fehl. />
Was habe ich versucht,
zu versuchte. /> Bestätigung der Berechtigungen der wichtigsten Gewölbe (es funktioniert später, daher sollten die Berechtigungen nicht das Problem sein) < /li>
< /ul>
Frage < /strong> < /p> < /> Wie kann ich ein besseres Muster für das Aufrufen von BURS (). /> Einblicke wären sehr geschätzt!
Code: Select all
public class KeyVaultService : IKeyVaultService
{
private readonly SecretClient _secretClient;
public KeyVaultService(string keyVaultName)
{
_secretClient = new SecretClient(new Uri($"https://{keyVaultName}.vault.azure.net"), new DefaultAzureCredential());
}
public string GetSecret(string keyName)
{
KeyVaultSecret secret = _secretClient.GetSecret(keyName);
return secret.Value;
}
}
public class Program
{
public static void Main(string[] args)
{
WebApplicationBuilder? builder = WebApplication.CreateBuilder(args);
// ... configuring logging, etc ...
var keyVault = new KeyVaultService(keyVaultName);
// this is where it fails, but only in the Container app
// locally works fine.
string conn = keyVault.GetSecret("ConnectionString");
// registering a service that needs connectionString in its constructor.
var app = builder.Build();
// after Build() the Key Vault works fine.
keyVault = new KeyVaultService(keyVaultName);
conn = keyVault.GetSecret("ConnectionString");
// omitting unrelated code, like app.Run()
}
}
Ich habe versucht, den Schlüsselgewölbe in die Konfiguration hinzuzufügen, und funktioniert in meiner Azure -Container -App nicht (funktioniert jedoch local). Anbieter. < /p>
Code: Select all
WebApplicationBuilder? builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddAzureKeyVault(XXXXX, new DefaultAzureCredential());
builder.ConfigureDatabase(builder.Configuration["ConnectionString"]);
var app = builder.Build();