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());
});
}
}
I am able to see the logs produced on Console. But if I swap the order of these lines:
Я не понимаю поведения DI в следующем случае. [code]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();
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");
} } [/code] I am able to see the logs produced on Console. But if I swap the order of these lines: [code]services.ConfigureAndInjectServices(configuration);
services.AddLogging(configure => { configure.AddConfiguration(configuration.GetSection("Logging")); configure.AddConsole(); }); [/code] the log does not log anymore (to Console). Why?