Core 2.0 缺少脚手架项目

Core 2.0 missing Scaffolding items

我创建了一个带有 User Base Authentication 的 Core 2.0 项目,但是在查看默认的 AccountController 时,只生成了 Logout() 操作方法。

Register()、ForgotPassword()、ExternalLogin() 等其他脚手架项目在哪里...

不过,我可以注册用户就好了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Core2.Data;

namespace Core2.Controllers
{

  [Route("[controller]/[action]")]
  public class AccountController : Controller
  {
     private readonly SignInManager<ApplicationUser> _signInManager;
     private readonly ILogger _logger;

     public AccountController(SignInManager<ApplicationUser> signInManager, ILogger<AccountController> logger)
     {
        _signInManager = signInManager;
        _logger = logger;
     }

     [HttpPost]
     [ValidateAntiForgeryToken]
     public async Task<IActionResult> Logout()
     {
        await _signInManager.SignOutAsync();
        _logger.LogInformation("User logged out.");
        return RedirectToPage("/Index");
     }
  }
}

您似乎已经创建了一个 Razor Pages ASP.NET 核心 MVC 应用程序:

Razor Pages is a new feature of ASP.NET Core MVC that makes coding page-focused scenarios easier and more productive.

如果您查看项目中的 Pages 文件夹,您将看到基于 Razor Pages 的相关用户身份验证操作的实现:

Pages
- Account
  - Login.cshtml
  - Login.cshtml.cs
  - Register.cshtml
  - Register.cshtml.cs
  - ...

最新的Visual Studio2017在使用ASP.NETCore 2.0时默认创建Razor Pages应用,如下图:

如果您想要传统的 MVC 方法,您可以 select Web Application (Model-View-Controller) 选项,它将生成您期望的控制器、操作等。