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

时间:2018-07-06 14:26:28

标签: authentication asp.net-core visual-studio-2017

当我使用“ 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

,但是我的文件夹结构(在解决方案中和在磁盘上)都像这样:

enter image description here

2 个答案:

答案 0 :(得分:4)

具有身份的ASP.NET Core 2.1自动包含“默认UI”。这是一个Razor Pages类库,通过AddDefaultIdentity中的Startup进行了引用,在后台它实际上称为AddDefaultUI

如果要在项目中使用实际文件,则需要将它们放入支架中。在解决方案资源管理器中右键单击您的项目,然后选择“添加”>“新的支架项目...”,然后单击左侧的“标识”列表,然后添加按钮。将弹出一个新窗口,允许您选择要包含的页面,上下文等。对其进行配置,使其随心所欲。

还值得注意的是,只要您使用AddDefaultIdentity,默认UI仍会包含在内,这意味着您实际上不需要所有需要的脚手架文件其中。它们本质上将用作替代。将使用项目中专门包含的所有内容,而缺少的所有内容将从默认UI中提取。

这还意味着,如果要执行诸如使用标准控制器操作和视图而不是“剃刀页面”的操作,则默认UI将保持 still 的状态,并具有优先权。如果要完全关闭默认UI,则必须使用AddIdentityAddIdentityCore而不是AddDefaultIdentity

答案 1 :(得分:0)

ASP.NET Core 2.1引入了Razor UI in class libraries。其UI的身份位于nuget package中。

有趣的是,您现在可以将UI与您的库一起打包,然后公开UI以进行覆盖。

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