我是mvc和asp.net的新手,并试图了解基础知识。
我有一个使用默认身份验证的ASP.NET MVC 5应用程序。它创建了默认的AspNetUsers,AspNetRoles和AspNetUserRoles enter code here
表。
我还在VS 2015中有一个winforms应用程序,它必须以编程方式创建mvc应用程序用户。两个应用程序都使用相同的数据库。
private static async Task<bool> CreateNewWebUser(string email, string mobile, string roleId)
{
try
{
string result = String.Empty;
var user = new IdentityUser
{
UserName = email,
Email = email,
};
var db = new ComplianceEntities();
var dbrole = db.AspNetRoles.Find(roleId);
var usermanager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new IdentityDbContext()));
if (usermanager.FindByName(email) == null)
{
var res = await usermanager.CreateAsync(user, "round(lue29");
if (res.Succeeded)
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ComplianceEntities()));
if (!roleManager.RoleExists("ROLE NAME"))
{
var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
role.Name = dbrole.Name;
roleManager.Create(role);
}
usermanager.AddToRole(user.Id, dbrole.Name);
}
}
return true;
}
catch (Exception ex)
{
return false;
}
}
在app.config中我添加了
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" >
<parameters>
<parameter value="Data Source=myDatabase; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<roleManager enabled="true" />
</system.web>
在我添加rolemanager代码之前,我收到一条错误消息,指出找不到角色“user”。
在我添加代码后,代码现在失败了
if (usermanager.FindByName(email) == null)
因为usermanager有我试图创建的电子邮件和用户但是找不到用户的AspNetUsers表。我不知道它在哪里创造。当我在用户管理员中检查用户时,他们没有与他们相关联的角色。
注意:IdentityDbContext()
正在引用Microsoft.AspNet.Identity.EntityFramework
中的类。
ComplianceEntities()
引用由框架库
public partial class ComplianceEntities : DbContext
{
public ComplianceEntities()
: base("name=ComplianceEntities")
{
}
}
过去六个小时我一直在讨论这个问题。请详细说明我的问题。
谢谢