简明 ASP.NET Core 手册问题记录
最近发现了一个简明Asp.net core的手册Demo教程,传送门,教程还是比较通俗易懂的,按着教程进行了学习
由于使用的.net core 3.1, 按照教程进行创建MVC项目,实际操作时候还是有一些问题,遂将一些问题进行记录。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。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 问题得以解决
