你将使用一个项目模板来创建一个 ASP.NET Core MVC 网站项目,该项目有一个数据库用于验证和授权用户。网站的访客可以注册他们的电子邮件、设置密码,然后使用这些凭据登录网站。
Visual Studio 默认使用 SQL Server LocalDB 作为账户数据库。VS Code(或更准确地说,dotnet CLI 工具)默认使用 SQLite,你可以指定一个开关来改为使用 SQL Server LocalDB。
让我们来看一下实际操作:
- 使用你喜欢的代码编辑器打开 MatureWeb 解决方案。
- 添加一个带有本地数据库中存储的身份验证账户的 MVC 网站项目,按照以下列表定义:
> 项目模板:ASP.NET Core Web App (Model-View-Controller) [C#] / mvc
> 项目文件和文件夹:Northwind.Mvc
> 解决方案文件和文件夹:MatureWeb
> 框架:.NET 9.0(标准支持)或 .NET 8.0(长期支持)
> 身份验证类型:个人账户 / --auth Individual
> 配置 HTTPS:选中
> 启用容器支持:取消选中
> 不使用顶级语句:取消选中
对于 VS Code,在 MatureWeb 解决方案文件夹中,使用以下命令:dotnet new mvc --auth Individual -o Northwind.Mvc dotnet sln add Northwind.Mvc
对于 Rider,右键点击 MatureWeb 解决方案,选择 Add | New Project...,在 New Project 对话框中,选择 ASP.NET Core Web Application,在 Type 中选择 Web App (Model-View-Controller),在 Auth 中选择 Individual authentication,然后点击 Create。
警告!如果你正在使用像我用来写这本课程的 Surface Laptop 7 这样的 Windows ARM 设备,那么你可能还需要使用这个 CLI 命令来创建项目,因为 SQL Server LocalDB 在 ARM 上尚未正常工作!
- 在 Northwind.Mvc.csproj 项目文件中,移除
元素中的 Version 属性,因为它们已经在解决方案级别的 Directory.Packages.props 文件中设置。 - 添加一个元素来全局和静态地导入 System.Console 类。
- 如果你使用 Visual Studio,在解决方案资源管理器中切换显示所有文件。如果你使用 Rider,将光标悬停在解决方案窗格上,然后点击眼睛图标。如果你使用 VS Code,那么所有文件和文件夹已经是可见的。
- 展开 obj 文件夹,展开 Debug 文件夹,展开 net9.0 文件夹,选择 Northwind.Mvc.GlobalUsings.g.cs 文件,并注意如何隐式导入的命名空间包括所有适用于控制台应用程序或类库的命名空间,以及一些 ASP.NET Core 命名空间,例如 Microsoft.AspNetCore.Builder,如下所示:
// <自动生成的 />
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using static global::System.Console;
- 关闭文件并折叠 obj 文件夹。
- 构建 Northwind.Mvc 项目。
- 在命令提示符或终端中,使用 help 开关查看此项目模板的其他选项,如下所示:
dotnet new mvc --help
- 注意结果,如下所示的部分输出:
ASP.NET Core Web App (Model-View-Controller) (C#)
Author: Microsoft
Description: A project template for creating an ASP.NET Core application
with example ASP.NET Core MVC Views and Controllers. This template can
also be used for RESTful HTTP services.
用于 dotnet new mvc 项目模板的附加开关,有许多选项,尤其是与身份验证相关的选项, 如下表所示:
选项参数 | 描述 |
-au or --auth | 身份验证类型的选项: None(默认): 选择此项时,也可以禁用 HTTPS。 Individual: 个人身份验证,将注册用户及其密码存储在数据库中(默认使用 SQLite)。本章的项目将使用此选项。 IndividualB2C: 使用 Azure AD B2C 的个人身份验证。 SingleOrg: 针对单租户的组织身份验证。 MultiOrg: 针对多租户的组织身份验证。 Windows: Windows 身份验证,主要用于内部网络(intranet)。 |
-uld or --use-localdb | 是否使用 SQL Server LocalDB 而非 SQLite。此选项仅在指定 --auth Individual 或 --auth IndividualB2C 时适用。 |
-rrc or --razorruntimecompilation | 此选项决定项目在调试构建时是否配置为使用 Razor 运行时编译。这可以在调试期间提高启动过程的性能,因为它能够延迟 Razor 视图的编译。 |
-f or --framework | 项目的目标框架。可选值为 net9.0(默认)或 net8.0。 |