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

Tit*_*off 7 asp.net-mvc-scaffolding asp.net-identity asp.net-core duende-identity-server angular13

所以。我使用 ASP.NET Core 模型和 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并更新.csproj。和繁荣,当我尝试访问应用程序受身份验证保护的部分时,我收到以下错误: 在此输入图像描述

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.
Run Code Online (Sandbox Code Playgroud)
知道了这一点,它说找不到的文件就在那里
当我访问我的应用程序时,一切似乎都很好。就在我单击“获取数据”(应用程序的受保护部分)时,我收到此错误。
我决定将所有依赖项升级到 v6 版本。同样的错误。
然后我深入研究了这篇 Microsoft 文章:What's new in ASP.NET Core 6.0,让我知道他们将 IdentityServer 从 IdentityServer4 迁移到 Duende。我更改了命名空间。但它从未修复我的应用程序。

我们正在谈论来自微软的默认应用程序,它会停止工作,而无需我与任何代码混合,只需对框架进行版本升级。
我被困在这里,对如何发生这种情况以及为什么没有人报告该错误感到惊讶。我不可能是唯一一个既想使用最新版本的框架又想利用 VS 内置项目创建器的人吗?

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

Ben*_*en5 6

我们可以通过将以下内容添加到 csproj 文件来解决该问题:

  <PropertyGroup>
    <UseRazorSourceGenerator>false</UseRazorSourceGenerator>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

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

从另一个来源我发现,添加此属性组可以提供更详细的信息,但它解决了未编译的视图:https ://developercommunity.visualstudio.com/t/vs-2022-mvc-core-does-不生成预编译-vie/1577269#T-N1578977

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


Dee*_*SFT 0

当您移动_LoginPartial所在的文件夹时,可能会出现上述错误,找不到相应的视图。

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

/Areas/<Area-Name>/Views/<Controller-Name>
/Areas/<Area-Name>/Views/Shared
/Views/Shared
/Pages/Shared
Run Code Online (Sandbox Code Playgroud)

我发现您可以尝试在 ASP.NET Core 中使用 Areas

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