You can try to create a service and use the UserManger in the service, then, configure the service using the Transient operations in the Startup.ConfigureServices method. The Transient operations are always different, a new instance is created with every retrieval of the service. Then, you could use this service in the controller. Please check the following steps:
create a UserManagerRepository service (in this service you can create methods and use the UserManager methods):
public interface IUserManagerRepository
{
void Write(string message);
}
public class UserManagerRepository : IUserManagerRepository, IDisposable
{
private bool _disposed;
private readonly UserManager<IdentityUser> _userManager;
public UserManagerRepository(UserManager<IdentityUser> userManager)
{
_userManager = userManager;
}
public void Write(string message)
{
// _userManager.ChangePasswordAsync()
Console.WriteLine($"UserManagerRepository: {message}");
}
public void Dispose()
{
if (_disposed)
return;
Console.WriteLine("UserManagerRepository.Dispose");
_disposed = true;
}
}
Confiture the service using the following code in the Startup.ConfigureServices method:
services.AddTransient<IUserManagerRepository, UserManagerRepository>();
After that, call the services manually in the controller action method.
public IActionResult Index()
{
var services = this.HttpContext.RequestServices;
var log = (IUserManagerRepository)services.GetService(typeof(IUserManagerRepository));
log.Write("Index method executing");
var log2 = (IUserManagerRepository)services.GetService(typeof(IUserManagerRepository));
log2.Write("Index method executing");
var log3 = (IUserManagerRepository)services.GetService(typeof(IUserManagerRepository));
log3.Write("Index method executing");
return View();
}
screenshot as below:

Reference:
Tutorial: Use dependency injection in .NET
Dependency injection guidelines
Dependency injection in ASP.NET Core