我正在尝试使用ASP.NET MVC v5,Entity Framework v7和Identity v3从头开始构建一个简单的登录系统。
我想要的只是让用户创建一个帐户,并将该帐户保存在数据库中。我能够使用Identity v2,并且脚手架MVC应用程序使用Identity v3创建数据库并保存用户就好了,所以我尝试连接两个工作应用程序中的代码来创建一个新代码。
这是我到目前为止的代码:
Startup.cs :
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup()
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json");
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
}
public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
}
appsettings.json 包含与数据库连接的此代码:
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=SimpleAuthenticationApp;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
这是 Controllers / AccountController.cs 中注册POST操作的代码:
[HttpPost]
public async Task<IActionResult> Register (RegisterViewModel model)
{
try
{
var user = new ApplicationUser { UserName = model.Email };
IdentityResult result = await _userManager.CreateAsync(user, model.Password);
Console.WriteLine(result);
return View("Home", "Index");
}
catch (Exception ex)
{
Console.WriteLine(ex);
return View();
}
}
这里,我在try块设置了一个断点,当它进入catch块时,异常读取&#34; Count = 1&#34;或&#34;发生了一个或多个错误&#34; ,我不知道如何看出这些错误是什么。
在此代码中,RegisterViewModel
只是一个ViewModel,其中包含Email,Password和ConfirmPassword字段。
帐户/注册视图只是一个要求这些字段的表单。 ApplicationUser
是一个从IdentityUser
延伸的类。
我被困在这里,我想弄清楚如何让应用程序创建数据库并使用Identity在其中保存用户配置文件。有关代码的任何想法,或者如何查看错误消息是什么?
答案 0 :(得分:1)
我想了解如何让应用创建数据库并使用Identity在其中保存用户配置文件。
据我所知,数据库不是在用户注册过程中自动创建的,因此您需要先更新数据库。
您可以自己创建数据库,也可以使用DB initializers。
请记住 - 如果您使用代码优先方法 - 您需要在午餐应用之前应用所有迁移
VS2015 RC1中的控制台命令:dnx ef database update
我想要的只是让用户创建一个帐户,并将该帐户保存在数据库中。我能够使用Identity v2,并且脚手架MVC应用程序使用Identity v3创建数据库并保存用户就好了,所以我正在尝试连接两个工作应用程序中的代码以创建一个新代码。
也许从最新的代码开始将更好的方式连接新旧?尝试使用默认实现创建新项目 - 它对我来说很好,然后您可以根据需要扩展默认解决方案:)
有关Authentication和Authorization的更多信息。
这里,我在try块设置了一个断点,当它进入catch块时,异常显示“Count = 1”,或“发生了一个或多个错误”,我不知道怎么看那些错误是什么。
使用ex.ToString()
方法 - 这将为您提供有关异常和所有内部异常的完整堆栈信息。