'Unable to create ILogger<T> when I use UserManager

I have the following very simple console app for creating Users manually via CLI.

Program.cs:

IConfiguration configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .Build();
            
var services = new ServiceCollection();
services.AddStorageConfiguration(configuration);
services.AddSingleton<CreateUserService>();
services.AddIdentity<User, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

services.BuildServiceProvider().GetService<CreateUserService>().Run();

CreateUserService.cs:

namespace CreateUserApp;

public class CreateUserService
{
    private readonly UserManager<User> _userManager;

    public CreateUserService(UserManager<User> userManager)
    {
        _userManager = userManager;
    }
    
    public void Run()
    {
        Console.WriteLine("Enter Username:");
        var username = Console.ReadLine();
        
        Console.WriteLine("Enter Email:");
        var email = Console.ReadLine();
        
        Console.WriteLine("Enter Password:");
        var password = Console.ReadLine();

        var user = new User
        {
            Email = email,
            UserName = username,
        };`enter code here`
        
        var res = _userManager.CreateAsync(user, password).GetAwaiter().GetResult();

        if (res.Succeeded)
        {
            Console.WriteLine("User successfully created. ");
        }
        else
        {
            Console.WriteLine("Can not create user. Errors:");
            foreach (var resError in res.Errors)
            {
                Console.WriteLine($"{resError.Code}: {resError.Description}");
            }
        }
    }
}

But when I run it, I see the following exception message:

Unhandled exception. System.InvalidOperationException: Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger`1[Microsoft.AspNetCore.Identity.UserManager`1[Domains.Us
er]]' while attempting to activate 'Microsoft.AspNetCore.Identity.UserManager`1[Domains.User]'.
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, B
oolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain ca
llSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, B
oolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain ca
llSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Type serviceType)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   at Program.<Main>$(String[] args) in C:\Projects\MyFamilyTree\MyFamilyTree\CreateUserApp\Program.cs:line 20

services.AddStorageConfiguration(configuration); is just my extension:

    public static IServiceCollection AddStorageConfiguration(this IServiceCollection services, IConfiguration configuration)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
        {
            options.UseNpgsql(configuration.GetConnectionString("DatabaseConnectionString"));
        });

        return services;
    }

I use .NET 6 So, any ideas what is wrong?



Solution 1:[1]

First: install ILogger implementation. $ dotnet add package Microsoft.Extensions.Logging

Second: install console logger provider. $ dotnet add package Microsoft.Extensions.Logging.Console

And then configure all off this:

services.AddLogging(configure => configure.AddConsole());   

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Aleksej_Shherbak