VS 2017 ASP.NET Core Web 应用程序和个人用户帐户有效,但页面不存在

Posted

技术标签:

【中文标题】VS 2017 ASP.NET Core Web 应用程序和个人用户帐户有效,但页面不存在【英文标题】:VS 2017 ASP.NET Core Web Application and Individual User Accounts works but pages are non-existent 【发布时间】:2018-12-15 04:33:58 【问题描述】:

当我使用“ASP.NET Core Web 应用程序”/“Web 应用程序”(非 MVC)/“个人用户帐户”创建 Web 项目时......我得到了带有注册和登录按钮的示例项目,显示了他们的当我点击它们时相应的页面。但是......非常奇怪的是,如果我在注册页面上搜索“创建一个新帐户”,它没有找到......还有更多......身份区域或任何地方都没有 AccountController......所以1)这些页面不在我的解决方案文件夹中的任何位置,2)这些页面到底是如何显示的?!?我现在在两台不同的电脑上试过。 (使用 Core 2.1)

作为示例,此链接有效:

<a asp-area="Identity" asp-page="/Account/Login">Login</a>

然后带我去:

https://localhost:44300/Identity/Account/Login

然而我的文件夹结构(在解决方案和磁盘上)看起来像这样:

【问题讨论】:

***.com/questions/50802781/… Where are the Login and Register pages in an AspNet Core scaffolded app?的可能重复 【参考方案1】:

带有 Identity 的 ASP.NET Core 2.1 自动包含“默认 UI”。这是一个 Razor Pages 类库,在 Startup 中通过 AddDefaultIdentity 引用,实际上它实际上调用了 AddDefaultUI

如果您想要项目中的实际文件,则需要将它们添加到脚手架中。在解决方案资源管理器中右键单击您的项目并选择添加 > 新建脚手架项...然后,单击左侧的身份列表,然后添加按钮。将弹出一个新窗口,允许您选择要包含的页面、上下文等。按照您喜欢的方式进行配置。

同样值得注意的是,只要你使用AddDefaultIdentity,默认的 UI 仍然包含在内,这意味着你实际上并不需要所有的脚手架文件,如果你想要其中任何一个.它们本质上将用作替代。将使用您项目中特别包含的任何内容,而缺少的任何内容都将从默认 UI 中提取。

这也意味着,如果您想要执行诸如使用标准控制器操作和视图而不是 Razor 页面之类的操作,则默认 UI 仍然处于活动状态,并具有优先权。如果您希望完全关闭默认 UI,则必须使用 AddIdentityAddIdentityCore 而不是 AddDefaultIdentity

【讨论】:

【参考方案2】:

ASP.NET Core 2.1 引入了Razor UI in class libraries。它的 UI 标识在 nuget package 中。

这样做的好处是您现在可以将 UI 与您的库一起打包,然后公开 UI 以进行覆盖。

post 描述了如何覆盖 UI。本质上,您将要覆盖到项目中的页面添加到 /Areas/Identity/Pages.... 目前最简单的方法是运行 scaffolder for identity 和 visual walkthrough。

【讨论】:

以上是关于VS 2017 ASP.NET Core Web 应用程序和个人用户帐户有效,但页面不存在的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Core:在VS2017中搭建React.js + webpack + babel

如何将 jQuery UI 添加到 Asp.Net Core VS2017?

在 asp.net core vs2015 update2 情况况下创建 asp.net core web application 的问题

asp.net core VS goang web[修正篇]

Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) 性能

ASP.Net Core Web 应用程序 POST 方法始终接收 NULL 作为参数