Share via


Integration der Azure-Clientbibliothek für ASP.NET Core

Microsoft.Extensions.Azure bietet freigegebene Grundtypen, um Azure-Clients mit ASP.NET Core Abhängigkeitsinjektion und -konfigurationssystemen zu integrieren.

Quellcode | Paket (NuGet)

Erste Schritte

Installieren des Pakets

Installieren Sie die ASP.NET Core-Integrationsbibliothek mithilfe von NuGet:

dotnet add package Microsoft.Extensions.Azure

Registrieren von Clients

Rufen Sie in der AddAzureClients Methode Ihrer App ConfigureServices auf. Sie können den bereitgestellten Generator verwenden, um Clientinstanzen bei Ihrem Abhängigkeitsinjektionscontainer zu registrieren.

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);
    });
}

Clients injizieren

Um die Clientanforderung zu verwenden, geben Sie den Clienttyp von einer beliebigen Stelle aus an, die Abhängigkeitsinjektion unterstützt (Konstruktoren, Configure-Aufrufe, @inject Razordefinitionen usw.).

public void Configure(IApplicationBuilder app, SecretClient secretClient, IAzureClientFactory<BlobServiceClient> blobClientFactory)

Erstellen benannter Instanzen

Wenn der Client als benannter Client registriert ist, fügen Sie IAzureClientFactory<T> ein und rufen Sie CreateClient an, indem Sie den Namen übergeben:

BlobServiceClient blobServiceClient = blobClientFactory.CreateClient("NamedBlobClient");

Konfigurationsdatei, die im obigen Beispiel verwendet wird:

{
  "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>"
    }
  }
}

Registrieren einer benutzerdefinierten Client factory

Wenn Sie die Kontrolle darüber übernehmen möchten, wie der Client instance erstellt wird oder während der Clienterstellung andere Abhängigkeiten verwenden müssen, verwenden Sie die AddClient<TClient, TOptions> -Methode.

Hier und ein Beispiel für die Verwendung IOptions<T> von instance zum Erstellen des Clients:

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);
        });
    });
}

Mitwirken

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.

Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.