【问题标题】:How to create an instance of UserManager in ASP.NET MVC Core 2如何在 ASP.NET MVC Core 2 中创建 UserManager 的实例
【发布时间】:2018-03-23 14:05:40
【问题描述】:

我正在尝试在 Mvc Core 2 中创建一个 UserManager 的实例,就像我在 ASP.NET MVC 6 上所做的那样,使用以下代码:

var UserManager = new UserManager<DbUser>(new UserStore<DbUser>(this) );

由于缺少参数,我收到很多错误,是否有正确的方法将实例移出控制器?

【问题讨论】:

  • 您是从新应用程序开始还是尝试迁移?是不是不能让它像 public YourClass(IUserManager userManager) { 那样注入双向 DI 框架...您还需要正确的配置...
  • 是的,我可以从 DI 获得它,但我是在启动应用程序时为少数管理员用户播种的配偶,但种子方法在另一个程序集中的 DbContext 中,而我没有访问 DI

标签: c# asp.net-mvc asp.net-core asp.net-core-2.0


【解决方案1】:

我无权访问 DI。

这个解释不正确,你可以在另一个程序集中注入UserManagerread more

例如,只需创建一个用于播种数据的服务:

public interface IInitializationService
{
    void Seed();
}

public class InitializationService : IInitializationService
{
    private readonly UserManager<ApplicationUser> _userManager;

    public InitializationService(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }

    public void Seed()
    {
        // more code
    }
}

在 Startup.cs 中注册服务

 public void ConfigureServices(IServiceCollection services)
 {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

        services.AddTransient<IInitializationService, InitializationService>();

        services.AddMvc();
 }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
        // more code ...

        var scopeFactory = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>();
        using (var scope = scopeFactory.CreateScope())
        {
            var identityDbInitialize = scope.ServiceProvider.GetService<IInitializationService>();
            identityDbInitialize.Seed();
        }

      // more code ...
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多