C# 通过另一个控制器将用户添加到aspnetuser表

C# 通过另一个控制器将用户添加到aspnetuser表,c#,asp.net-mvc,security,controller,asp.net-identity,C#,Asp.net Mvc,Security,Controller,Asp.net Identity,我正在使用C#、ASP.NETMVC和.NET4.5。我有一个测试控制器,只有我可以访问,基本上我希望能够创建一次500个测试用户,并将这些用户插入我的aspnetusers表中,这是在我的测试环境中 在我的控制器中,我有: RegisterViewModel model = new RegisterViewModel(); var s = Guid.NewGuid().ToString(); model.AccountType = accountType; model.Email = s +

我正在使用C#、ASP.NETMVC和.NET4.5。我有一个测试控制器,只有我可以访问,基本上我希望能够创建一次500个测试用户,并将这些用户插入我的
aspnetusers
表中,这是在我的测试环境中

在我的控制器中,我有:

RegisterViewModel model = new RegisterViewModel();

var s = Guid.NewGuid().ToString();
model.AccountType = accountType;
model.Email = s + "@email.com";
model.Password = s;
model.ConfirmPassword = s;

var result = new AccountController().Register(model);
这将转到标准寄存器控制器:

public async Task<ActionResult> Register(RegisterViewModel model)
我看到其他人在开始时提到“播种”,但我不想这样做,我有大量的数据需要在用户进入系统后自动/添加,因此需要循环检查输入的每个用户,然后插入更多的数据。我不想手动为每个表创建一个帐户,然后还要在所有其他表中添加所有其他详细信息


当然有一个简单的方法可以做到这一点,有人知道吗?。

让你的非同步功能变成这样

public class TestController : Controller
{
    ApplicationDbContext db = new ApplicationDbContext();

    // GET: Test
    public ActionResult Index()
    {
        var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
        string s = "User!1Nom"; // must contain special char if you use asp.net identity default validation 
        for (int i = 1; i < 501; i++)
        {
            s = s + i;
            var user = new ApplicationUser { UserName = s, Email = s+"@gmail.com" };
            var result = userManager.Create(user, s);
        }
        return View();
    }
}
公共类TestController:Controller
{
ApplicationDbContext db=新的ApplicationDbContext();
//获取:测试
公共行动结果索引()
{
var userManager=newusermanager(newuserstore(db));
字符串s=“User!1Nom”;//如果使用asp.net标识默认验证,则必须包含特殊字符
对于(int i=1;i<501;i++)
{
s=s+i;
var user=newapplicationuser{UserName=s,Email=s+“@gmail.com”};
var result=userManager.Create(用户,s);
}
返回视图();
}
}

将您的非同步功能设置为这样

public class TestController : Controller
{
    ApplicationDbContext db = new ApplicationDbContext();

    // GET: Test
    public ActionResult Index()
    {
        var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
        string s = "User!1Nom"; // must contain special char if you use asp.net identity default validation 
        for (int i = 1; i < 501; i++)
        {
            s = s + i;
            var user = new ApplicationUser { UserName = s, Email = s+"@gmail.com" };
            var result = userManager.Create(user, s);
        }
        return View();
    }
}
公共类TestController:Controller
{
ApplicationDbContext db=新的ApplicationDbContext();
//获取:测试
公共行动结果索引()
{
var userManager=newusermanager(newuserstore(db));
字符串s=“User!1Nom”;//如果使用asp.net标识默认验证,则必须包含特殊字符
对于(int i=1;i<501;i++)
{
s=s+i;
var user=newapplicationuser{UserName=s,Email=s+“@gmail.com”};
var result=userManager.Create(用户,s);
}
返回视图();
}
}

您是否尝试在测试控制器中仅使用UserManager实例,而不是尝试实例化AccountController的新实例?感谢您的回复,是的,如果我添加var result=UserManager.CreateAsync(user,model.Password),则不确定我在做什么;我得到一个错误:使用泛型类型“UserManager”需要1个类型参数。我相信您需要创建UserManager的实例。下面的答案与您需要的答案类似。您是否尝试在测试控制器中使用UserManager实例,而不是尝试实例化AccountController的新实例?感谢您的回答,是的,但不确定我在做什么,如果我添加var result=UserManager.CreateAsync(user,model.Password);我得到一个错误:使用泛型类型“UserManager”需要1个类型参数。我相信您需要创建UserManager的实例。下面的答案与您需要的答案类似。