Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp core2中正确设置用户标识种子?_C#_Asp.net Identity_Asp.net Core 2.0_Seeding - Fatal编程技术网

C# 如何在asp core2中正确设置用户标识种子?

C# 如何在asp core2中正确设置用户标识种子?,c#,asp.net-identity,asp.net-core-2.0,seeding,C#,Asp.net Identity,Asp.net Core 2.0,Seeding,我有一个种子类,它一直无法在users表中插入记录 我认为使用CreateAsync是不合适的,因为该方法不是异步的,用户管理器不会对记录进行种子设定。所以我尝试使用散列密码手动进行种子设定,但无法登录。我张贴这两种方法 为什么不在数据库初始化中插入用户信息? 1。使用UserManager CreateAync public void SeedData() { using (var serviceScope = scopeFactory.C

我有一个种子类,它一直无法在users表中插入记录

我认为使用CreateAsync是不合适的,因为该方法不是异步的,用户管理器不会对记录进行种子设定。所以我尝试使用散列密码手动进行种子设定,但无法登录。我张贴这两种方法

为什么不在数据库初始化中插入用户信息? 1。使用UserManager CreateAync

       public void SeedData()
        {
            using (var serviceScope = scopeFactory.CreateScope())
            {
                using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
                {
         if (!context.ApplicationUser.Any())
                  {
               var user = new ApplicationUser
                        {
                            CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
                            CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
                             Email = "maizer85@hotmail.com",
                            FirstName = "Zaid",
                            GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
                            IsActive = true,
                            LastName = "Abu Maizar",
                            MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
                            NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
                            OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
                             PersonalPhotoUrl = null,
                             PhoneNumber = "4243244990",
                             PhoneNumberConfirmed = false,
                             PostalCode = 91335,
                             SocialSecurityNo = "AABBCC",
                            StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
                            StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
                             UserName = "Zaid",

                        };
                         userManager.CreateAsync(user, "String@string85");
                         context.SaveChanges();
                    }

                }
            }
        }

这里有一个类似的主题:

因此,您需要使用非异步扩展方法。使用Microsoft.AspNet.Identity添加
Microsoft.AspNet.Identity
程序集和

有一个例子:

关于人工播种。我认为您无法登录,因为您正在使用的HashPassword函数与UserManager在检查密码时使用的算法不同

要使其工作,请尝试使用
userManager.PasswordHasher.HashPassword(..)
方法而不是函数

在应用程序用户中:

...
PasswordHash = userManager.PasswordHasher.HashPassword("Zaid@core85"),
...

这个实现对我有效

public void SeedData()
        {
            using (var serviceScope = scopeFactory.CreateScope())
            {
                using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
                {
         if (!context.ApplicationUser.Any())
                  {
               var user = new ApplicationUser
                        {
                            CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
                            CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
                             Email = "maizer85@hotmail.com",
                            FirstName = "Zaid",
                            GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
                            IsActive = true,
                            LastName = "Abu Maizar",
                            MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
                            NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
                            OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
                             PersonalPhotoUrl = null,
                             PhoneNumber = "4243244990",
                             PhoneNumberConfirmed = false,
                             PostalCode = 91335,
                             SocialSecurityNo = "AABBCC",
                            StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
                            StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
                             UserName = "Zaid",

                        };
                    Task<IdentityResult> createTask = userManager.CreateAsync(user, "Temp_123");
                    createTask.Wait();

                    }

                }
            }
        }
public void SeedData()
{
使用(var serviceScope=scopeFactory.CreateScope())
{
使用(var context=serviceScope.ServiceProvider.GetService())
{
如果(!context.ApplicationUser.Any())
{
var user=新应用程序用户
{
CityId=context.Cities.Where(g=>g.Name==“Abu Nusair”).SingleOrDefault().Id,
CountryId=context.Countries.Where(g=>g.Name==“Jordan”).SingleOrDefault().Id,
电子邮件=”maizer85@hotmail.com",
FirstName=“Zaid”,
GenderId=context.Genders.Where(g=>g.Name==“Female”).SingleOrDefault().Id,
IsActive=true,
LastName=“Abu Maizar”,
MaritalStatusId=context.MaritalStatus.Where(g=>g.Name==“Single”).SingleOrDefault().Id,
NationalityId=context.nations.Where(g=>g.Name==“Jordanian”).SingleOrDefault().Id,
OccupationId=context.Occupations.Where(g=>g.Name==“MD”).SingleOrDefault().Id,
PersonalPhotoUrl=null,
PhoneNumber=“4243244990”,
PhoneNumberConfiged=false,
PostalCode=91335,
社会安全no=“AABBCC”,
StateId=context.States.Where(g=>g.Name==“Amman”).SingleOrDefault().Id,
StatusId=context.Statuses.Where(g=>g.Name==“Active”).SingleOrDefault().Id,
UserName=“Zaid”,
};
任务createTask=userManager.CreateAsync(用户,“Temp_123”);
createTask.Wait();
}
}
}
}

Hasher接受两个参数,
this.userManager.PasswordHasher.HashPassword(ApplicationUser,Password)
是的,很抱歉我使用了旧的ASP.NET标识,现在我看到在新的实现中它要求用户和密码。
...
PasswordHash = userManager.PasswordHasher.HashPassword("Zaid@core85"),
...
public void SeedData()
        {
            using (var serviceScope = scopeFactory.CreateScope())
            {
                using (var context = serviceScope.ServiceProvider.GetService<ArtCoreDbContext>())
                {
         if (!context.ApplicationUser.Any())
                  {
               var user = new ApplicationUser
                        {
                            CityId = context.Cities.Where(g => g.Name == "Abu Nusair").SingleOrDefault().Id,
                            CountryId = context.Countries.Where(g => g.Name == "Jordan").SingleOrDefault().Id,
                             Email = "maizer85@hotmail.com",
                            FirstName = "Zaid",
                            GenderId = context.Genders.Where(g => g.Name == "Female").SingleOrDefault().Id,
                            IsActive = true,
                            LastName = "Abu Maizar",
                            MaritalStatusId = context.MaritalStatus.Where(g => g.Name == "Single").SingleOrDefault().Id,
                            NationalityId = context.Nationalities.Where(g => g.Name == "Jordanian").SingleOrDefault().Id,
                            OccupationId = context.Occupations.Where(g => g.Name == "MD").SingleOrDefault().Id,
                             PersonalPhotoUrl = null,
                             PhoneNumber = "4243244990",
                             PhoneNumberConfirmed = false,
                             PostalCode = 91335,
                             SocialSecurityNo = "AABBCC",
                            StateId = context.States.Where(g => g.Name == "Amman").SingleOrDefault().Id,
                            StatusId = context.Statuses.Where(g => g.Name == "Active").SingleOrDefault().Id,
                             UserName = "Zaid",

                        };
                    Task<IdentityResult> createTask = userManager.CreateAsync(user, "Temp_123");
                    createTask.Wait();

                    }

                }
            }
        }