从winforms应用程序以编程方式创建MVC 5应用程序用户时出现问题

时间:2016-11-02 18:28:20

标签: winforms asp.net-mvc-5 asp.net-identity owin

我是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()引用由框架库

中的EF创建的实体类
public partial class ComplianceEntities : DbContext
{
    public ComplianceEntities()
    : base("name=ComplianceEntities")
    {
    }
}

过去六个小时我一直在讨论这个问题。请详细说明我的问题。

谢谢

0 个答案:

没有答案