最近发现了一个简明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
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true).AddRoles<IdentityRole>()