添加数据库后ASP.NET Core 6.0 MVC页面异常及空白页求助
问题1:页面加载时出现DataProtection加密错误(MissingMethodException)
错误原因
该错误源于ASP.NET Core组件版本不兼容:你的项目基于ASP.NET Core 6.0,但使用了更高版本的Entity Framework Core 7.0.9,而Identity 6.0.2依赖的DataProtection组件版本与EF Core 7.0的依赖版本冲突,引发了方法找不到的异常。
解决步骤
- 统一组件版本:将所有ASP.NET Core相关NuGet包的版本统一为6.x系列(与项目框架版本匹配)
- 降级EF Core到6.x最新稳定版(如6.0.25),可通过NuGet包管理器更新,或直接修改.csproj文件:
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.25" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.25" /> - 保持Identity相关包版本为6.0.2,确保与Core 6.0兼容。
- 降级EF Core到6.x最新稳定版(如6.0.25),可通过NuGet包管理器更新,或直接修改.csproj文件:
- 清理并还原NuGet包
- 删除项目目录下的
bin和obj文件夹 - 执行
dotnet restore命令重新还原依赖包
- 删除项目目录下的
- 显式配置DataProtection密钥存储(可选,规避默认DPAPI加密的兼容性问题)
在Program.cs中添加DataProtection配置,指定密钥存储位置:builder.Services.AddDataProtection() .PersistKeysToFileSystem(new DirectoryInfo(@"C:\YourAppKeys")) // 替换为你有读写权限的目录 .SetApplicationName("StorApp"); // 设置你的应用名称
问题2:ManageRole的Role页面完全空白
错误原因
页面空白通常是视图未正确绑定强类型模型、视图文件位置错误或控制器逻辑异常导致的。
解决步骤
- 确认视图的强类型模型绑定
在Role.cshtml最顶部添加强类型声明,确保视图能正确识别传入的模型:@model List<Microsoft.AspNetCore.Identity.IdentityRole> - 检查视图文件位置
视图文件必须放在正确的目录下:- 若为ManageRole控制器专属视图,路径应为
Views/ManageRole/Role.cshtml - 若为共享视图,可放在
Views/Shared/Role.cshtml,但优先使用控制器专属目录
- 若为ManageRole控制器专属视图,路径应为
- 排查控制器逻辑
- 在
Index方法中添加断点,确认_roleManager.Roles.ToList()是否能正常获取数据,是否抛出数据库连接异常 - 确保已执行EF Core迁移,数据库中的
AspNetRoles表已创建(执行Add-Migration InitialCreate和Update-Database命令)
- 在
- 检查页面渲染逻辑
若数据库中无角色数据,视图应显示“هنوز هیچ مقامی تعریف نشده است”;若仍空白,打开浏览器开发者工具,查看页面HTML是否有渲染内容,或是否存在控制台错误。
内容的提问来源于stack exchange,提问作者sadegh
相关产品推荐
相关产品推荐

