Интеграция клиентской библиотеки Azure для ASP.NET Core
Microsoft.Extensions.Azure предоставляет общие примитивы для интеграции клиентов Azure с ASP.NET Core системами внедрения зависимостей и настройки.
Начало работы
Установка пакета
Установите библиотеку интеграции ASP.NET Core с помощью NuGet:
dotnet add package Microsoft.Extensions.Azure
Регистрация клиентов
Выполните вызов AddAzureClients
в методе ConfigureServices
приложения. Вы можете использовать предоставленный построитель для регистрации экземпляров клиента в контейнере внедрения зависимостей.
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);
});
}
Внедрение клиентов
Чтобы использовать клиент, запросите тип клиента из любого места, которое поддерживает внедрение зависимостей (конструкторы, вызовы настройки, @inject
определения razor и т. д.)
public void Configure(IApplicationBuilder app, SecretClient secretClient, IAzureClientFactory<BlobServiceClient> blobClientFactory)
Создание именованных экземпляров
Если клиент зарегистрирован как именованный клиент путем внедрения IAzureClientFactory<T>
и вызова CreateClient
, передавая имя:
BlobServiceClient blobServiceClient = blobClientFactory.CreateClient("NamedBlobClient");
Файл конфигурации, используемый в приведенном выше примере:
{
"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>"
}
}
}
Регистрация настраиваемой фабрики клиента
Если вы хотите контролировать создание экземпляра клиента или использовать другие зависимости во время построения клиента, используйте AddClient<TClient, TOptions>
метод .
Ниже приведен пример использования экземпляра IOptions<T>
для создания клиента.
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);
});
});
}
Участие
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.