Intégration de la bibliothèque cliente Azure pour ASP.NET Core
Microsoft.Extensions.Azure fournit des primitives partagées pour intégrer les clients Azure à ASP.NET Core systèmes d’injection et de configuration de dépendances.
Prise en main
Installer le package
Installez la bibliothèque d’intégration ASP.NET Core à l’aide de NuGet :
dotnet add package Microsoft.Extensions.Azure
Inscrire des clients
Effectuez un appel à AddAzureClients
dans la méthode de ConfigureServices
votre application. Vous pouvez utiliser le générateur fourni pour inscrire des instances clientes avec votre conteneur d’injection de dépendances.
public void ConfigureServices(IServiceCollection services)
{
// Registering policy to use in ConfigureDefaults later
services.AddSingleton<DependencyInjectionEnabledPolicy>();
services.AddAzureClients(builder => {
// Register blob service client and initialize it using the KeyVault section of configuration
builder.AddSecretClient(Configuration.GetSection("KeyVault"))
// Set the name for this client registration
.WithName("NamedBlobClient")
// Set the credential for this client registration
.WithCredential(new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>"))
// Configure the client options
.ConfigureOptions(options => options.Retry.MaxRetries = 10);
// Adds a secret client using the provided endpoint and default credential set later
builder.AddSecretClient(new Uri("http://my.keyvault.com"));
// Configures environment credential to be used by default for all clients that require TokenCredential
// and doesn't override it on per registration level
builder.UseCredential(new EnvironmentCredential());
// This would use configuration for auth and client settings
builder.ConfigureDefaults(Configuration.GetSection("Default"));
// Configure global retry mode
builder.ConfigureDefaults(options => options.Retry.Mode = RetryMode.Exponential);
// Advanced configure global defaults
builder.ConfigureDefaults((options, provider) => options.AddPolicy(provider.GetService<DependencyInjectionEnabledPolicy>(), HttpPipelinePosition.PerCall));
// Register blob service client and initialize it using the Storage section of configuration
builder.AddBlobServiceClient(Configuration.GetSection("Storage"))
.WithVersion(BlobClientOptions.ServiceVersion.V2019_02_02);
});
}
Injecter des clients
Pour utiliser le type de client à partir de n’importe quel emplacement prenant en charge l’injection de dépendances (constructeurs, Configurer les appels, @inject
définitions razor, etc.)
public void Configure(IApplicationBuilder app, SecretClient secretClient, IAzureClientFactory<BlobServiceClient> blobClientFactory)
Créer des instances nommées
Si le client est inscrit en tant que client nommé, injectez IAzureClientFactory<T>
et appelez CreateClient
en passant le nom :
BlobServiceClient blobServiceClient = blobClientFactory.CreateClient("NamedBlobClient");
Fichier de configuration utilisé dans l’exemple ci-dessus :
{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
},
"AllowedHosts": "*",
"Default": {
"ClientId": "<client_id>",
"ClientSecret": "<client_secret>",
"TenantId": "<tenant_id>",
"TelemetryPolicy": {
"ApplicationId": "AppId"
}
},
"KeyVault": {
"VaultUri": "<vault_uri>"
},
"Storage": {
"serviceUri": "<service_uri>",
"credential": {
"accountName": "<account_name>",
"accountKey": "<account_key>"
}
}
}
Inscription d’une fabrique cliente personnalisée
Si vous souhaitez contrôler la façon dont le client instance est créé ou si vous devez utiliser d’autres dépendances pendant la construction du client, utilisez la AddClient<TClient, TOptions>
méthode .
Voici un exemple d’utilisation IOptions<T>
de instance pour construire le client :
public class MyApplicationOptions
{
public Uri KeyVaultEndpoint { get; set; }
}
public void ConfigureServices(IServiceCollection services)
{
// Configure a custom options instance
services.Configure<MyApplicationOptions>(options => options.KeyVaultEndpoint = new Uri("http://localhost/"));
services.AddAzureClients(builder =>
{
// Register a client using MyApplicationOptions to get constructor parameters
builder.AddClient<SecretClient, SecretClientOptions>((options, credential, provider) =>
{
var appOptions = provider.GetService<IOptions<MyApplicationOptions>>();
return new SecretClient(appOptions.Value.KeyVaultEndpoint, credential, options);
});
});
}
Contribution
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez https://cla.microsoft.com.
Quand vous envoyez une demande de tirage (pull request), un bot CLA détermine automatiquement si vous devez fournir un contrat CLA et agrémenter la demande de tirage de façon appropriée (par exemple, avec une étiquette ou un commentaire). Suivez simplement les instructions fournies par le bot. Vous ne devez effectuer cette opération qu’une seule fois sur tous les dépôts utilisant notre contrat CLA.
Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.