如何在非托管的asp.net-5控制台应用程序包中访问UserManager
和/或RoleManger
?
答案 0 :(得分:5)
<强> 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"
}
}
}