Я не понимаю поведения DI в следующем случае.
Код: Выделить всё
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using Microsoft.Extensions.Azure;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Azure.Identity;
namespace TestResults.Processor;
internal class Program
{
private static async Task Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", false, true)
.AddEnvironmentVariables()
.Build();
var services = new ServiceCollection();
services.AddLogging(configure =>
{
configure.AddConfiguration(configuration.GetSection("Logging"));
configure.AddConsole();
});
services.ConfigureAndInjectServices(configuration);
using var serviceProvider = services.BuildServiceProvider();
var logger = serviceProvider.GetRequiredService();
logger.LogInformation($"serviceBusFqns: ....");
logger.LogInformation($"serviceBusFqns: ....");
}
}
public static class DependencyInjectionHelper
{
public static void ConfigureAndInjectServices(this IServiceCollection services, IConfigurationRoot configuration)
{
var serviceBusFqns = configuration.GetValue("ServiceBus:FullyQualifiedNs");
var managedIdentityClientID = configuration.GetValue("ServiceBus:ManagedIdentityClientID");
services.AddAzureClients(builder =>
{
builder.AddServiceBusClientWithNamespace(serviceBusFqns);
builder.UseCredential(new DefaultAzureCredential());
});
}
}
Код: Выделить всё
services.ConfigureAndInjectServices(configuration);
services.AddLogging(configure =>
{
configure.AddConfiguration(configuration.GetSection("Logging"));
configure.AddConsole();
});
Источник: https://stackoverflow.com/questions/781 ... rification