c# - 如何从控制台应用程序访问 UserManager 和 RoleManager?

标签 c# asp.net asp.net-core entity-framework-core

如何在非托管中访问 UserManager 和/或 RoleManger控制台应用程序包?

最佳答案

Program.cs

public class Program
{
    public void Main(string[] args)
    {
        var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
        var userManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();

        // do whatever
    }

    private readonly IServiceProvider serviceProvider;

    public IConfigurationRoot Configuration { get; private set; }

    public Program(IApplicationEnvironment env, IServiceManifest serviceManifest)
    {
        Configuration =
            new ConfigurationBuilder(Directory.GetCurrentDirectory())
            .AddJsonFile("config.json") // add the file to your project
            .AddEnvironmentVariables()
            .Build();

        var services = new ServiceCollection();
        ConfigureServices(services);
        serviceProvider = services.BuildServiceProvider();
    }

    private void ConfigureServices(IServiceCollection services)
    {
        var connectionString = Configuration["Data:DefaultConnection:ConnectionString"];

        // Register EntityFramework 7
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(connectionString));

        // Register UserManager & RoleManager
        services.AddIdentity<ApplicationUser, IdentityRole>()
           .AddEntityFrameworkStores<ApplicationDbContext>()
           .AddDefaultTokenProviders();

        // UserManager & RoleManager require logging and HttpContext dependencies
        services.AddLogging();
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    }
}

config.json

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=(localdb)\\ProjectsV12;Database=my-database-name;Integrated Security=true;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
  }
}

关于c# - 如何从控制台应用程序访问 UserManager 和 RoleManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602327/

相关文章:

c# - 编译 Expression<T> 时,它是否被隐式缓存?

c# - 使用 C# 以编程方式将分层数据转换为 HTML 无序列表

c# - WebConfig 合并应用程序设置

asp.net-core - 如何实现最小 Controller

c# - ASP.NET Core 解析 DbContext 依赖以初始化迁移

visual-studio - 防止 Visual Studio 嵌套 typescript 文件

c# - 使用 Dot Net 的标准身份验证收集额外信息

c# - 我如何从颜色或画笔类中获取所有标准颜色

c# - Visual Studio GlobalSuppression.cs 文件和 UTF-16

javascript - 浏览器后退按钮使用旧的 JavaScript 加载旧页面