简明 ASP.NET Core 手册问题记录

最近发现了一个简明Asp.net core的手册Demo教程,传送门,教程还是比较通俗易懂的,按着教程进行了学习

由于使用的.net core 3.1, 按照教程进行创建MVC项目,实际操作时候还是有一些问题,遂将一些问题进行记录。

1 执行数据库变更报错,提示 dotnet-ef 命令不存在

提示

“无法执行,因为找不到指定的命令或文件。
可能的原因包括:
  *你拼错了内置的 dotnet 命令。
  *你打算执行 .NET Core 程序,但 dotnet-ef 不存在。
  *你打算运行全局工具,但在路径上找不到名称前缀为 dotnet 的可执行文件。”

执行dotnet ef migrations命令时,遇到了问题,经过查阅资料和环境配置,发现是3.0 dotnet-ef的命令行工具未安装,查阅nuget后,使用  dotnet tool install --global dotnet-ef --version 3.1.1 进行安装dotnet

2 执行dotnet ef migrations命令,总是build start   build failed

问题一直查找不出来,后来dotnet run发现本身代码有一个报错,解决了代码报错之后,重新执行后成功了

3 ApplicationUser未定义

提示 No service for type 'Microsoft.AspNetCore.Identity.UserManager`

用户信息授权和认证参照教程使用了ApplicationUser,一直提示未定义,想着是Microsoft.AspNetCore.Identity里封装的,添加引用也没有生效,后参阅MSDN教程说明https://docs.microsoft.com/zh-cn/aspnet/core/migration/identity?view=aspnetcore-3.1

章节迁移-ASP.NET 到ASP.NET Core看到了代码Demo

原来是需要手动添加模型的定义,添加ApplicationUser类之后,应用Models,错误解决

3 账号登录错误

dotnet new mvc 默认创建的项目模板,_LoginPartial视图中,默认为IdentityUser的引用,这里是个问题,因此需要引入自定义的models,并将注入方法的用户修改为ApplicationUser

@using Microsoft.AspNetCore.Identity
@using xxxx.Models
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
 
4 用户角色服务错误
 
提示 "No service for type 'Microsoft.AspNetCore.Identity.RoleManager`1
这里需要修改startup.cs,由于未添加角色服务,需要增加AddRoles<IdentityRole>()

 services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true).AddRoles<IdentityRole>()

             .AddSignInManager<SignInManager<ApplicationUser>>() 
                .AddEntityFrameworkStores<ApplicationDbContext>();
 
5 程序启动创建的管理员角色账号登录不了
 
页面未见提示,一直提示登录失败,查看代码运行的警告发现 User 77630e93-9a3c-4a72-a5d1-af2ad9a909f6 cannot sign in without a confirmed account.
因为默认使用的是邮箱登录方式,这里需要对账号进行一次确认,默认创建管理员账号时,只进行了账号和角色的创建,猜测是未确认账号的问题,因此需要修改账号确认状态
 
设置 ApplicationUser 的属性EmailConfirmed = true 问题得以解决


原文地址:https://www.cnblogs.com/dpwow/p/12206930.html