您可以尝试创建一个服务并在服务中使用 UserManger,然后使用 Startup.ConfigureServices 方法中的 Transient 操作来配置该服务。瞬态操作总是不同的,每次检索服务都会创建一个新实例。然后,您可以在控制器中使用此服务。请检查以下步骤:
创建一个 UserManagerRepository 服务(在此服务中,您可以创建方法并使用 UserManager 方法):
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;
}
}
在 Startup.ConfigureServices 方法中使用以下代码配置服务:
services.AddTransient<IUserManagerRepository, UserManagerRepository>();
之后,在控制器操作方法中手动调用服务。
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();
}
截图如下:

参考:
教程:在 .NET 中使用依赖注入
依赖注入指南
ASP.NET Core 中的依赖注入