默认的 Identity UI 布局需要部分视图“_LoginPartial”错误 ASP.NET Core 6.0

问题描述 投票:0回答:4

所以。我使用模型 ASP.NET Core with Angular 使用 Visual Studio Pro 2019 (v16.11.9) 创建了一个全新的项目。我将身份验证选项设置为个人用户帐户
我得到了一个使用 Angular 8ASP.NET Core 3.1(没有深究为什么这些版本,只是接受事实)、Entity FrameworkIdentity 的工作脚手架项目,这正是我想要的除了框架版本。我想使用最新版本,因此 Angular 13ASP.NET Core 6.0

所以我开始逐个版本升级我的 Angular 版本,检查每一步应用程序是否仍然有效。到达 Angular 13,没有发现问题,身份验证工作正常。
然后,我按照非常复杂(此处具有讽刺意味)的 Microsoft 教程来更新您的 .NET Core 版本:从 ASP.NET Core 3.1 迁移到 6.0 并更新 .csprojboom,当我尝试访问应用程序受身份验证保护的部分时,出现以下错误:

InvalidOperationException: The default Identity UI layout requires a partial view '_LoginPartial' usually located at '/Pages/_LoginPartial' or at '/Views/Shared/_LoginPartial' to work. Based on your configuration we have looked at it in the following locations: /Areas/Identity/Pages/Account/_LoginPartial.cshtml /Areas/Identity/Pages/_LoginPartial.cshtml /Areas/Identity/Pages/Shared/_LoginPartial.cshtml /Areas/Identity/Views/Shared/_LoginPartial.cshtml /Pages/Shared/_LoginPartial.cshtml /Views/Shared/_LoginPartial.cshtml.

知道了这一点,它说找不到的文件就在那里
当我访问我的应用程序时,一切似乎都很好。当我点击应用程序的受保护部分“获取数据”时,我收到此错误。 我决定将所有依赖项升级到 v6 版本。同样的错误。 然后我深入研究了这篇 Microsoft 文章:
ASP.NET Core 6.0 中的新增功能
,让我知道他们将 IdentityServer 从 IdentityServer4 迁移到了 Duende。我更改了命名空间。但它从未修复我的应用程序。 我们正在谈论来自 Microsoft 的默认应用程序,它无需我与任何代码混合即可停止工作,只需对框架进行版本升级即可。
我被困在这里,对如何发生这种情况以及为什么没有人报告该错误感到惊讶。我不可能是唯一一个既想使用最新版本的框架又想利用 VS 内置项目创建器的人吗?

谁能帮我解决这个问题吗?

asp.net-core asp.net-identity asp.net-mvc-scaffolding angular13 duende-identity-server
4个回答
5
投票

<PropertyGroup> <UseRazorSourceGenerator>false</UseRazorSourceGenerator> </PropertyGroup>

添加此内容的原因是我在构建过程中收到以下消息:
1>CSC:警告 CS8785:生成器“RazorSourceGenerator”无法生成源。它不会对输出产生影响,因此可能会出现编译错误。异常的类型为“NullReferenceException”,消息为“对象引用未设置为对象的实例。”

从另一个来源我发现,添加此属性组可以提供更详细的信息,但它解决了未编译的视图:

https://developercommunity.visualstudio.com/t/vs-2022-mvc-core-不生成预编译-vie/1577269#T-N1578977

目前还不清楚这是否是一个好的最终解决方案。您可以在此处关注我与 .net 团队的讨论:

https://github.com/dotnet/aspnetcore/issues/41277


0
投票

如果您通过名称引用局部视图而不带扩展名,那么它将在以下位置查找。

/Areas/<Area-Name>/Views/<Controller-Name> /Areas/<Area-Name>/Views/Shared /Views/Shared /Pages/Shared

我发现你可以尝试使用
ASP.NET Core中的区域

参考:

如何使用mvc将Areas文件夹移动到DotNet Core中的子文件夹


0
投票

我将按照此再次构建身份:

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-6.0&tabs=netcore-cli


0
投票

将项目从 .NET 7 迁移到 .NET 8 时,我也遇到了完全相同的问题。当我尝试清理项目时,收到一条错误消息,提示我当前的 Visual Studio 版本不支持 .NET 8 - 但这并不明显。更新到最新后就不再报错了。

© www.soinside.com 2019 - 2024. All rights reserved.