本文重点介绍 ASP.NET Core 2.1 中最重要的更改,并提供相关文档的链接。
已针对 ASP.NET Core 2.1 重新编写 SignalR。 ASP.NET Core SignalR 包含大量改进:
有关详细信息,请参阅 ASP.NET Core SignalR。
通过 ASP.NET Core 2.1 可以更容易地在库中生成和包括基于 Razor 的 UI,并跨多个项目共享 UI。 新 Razor SDK 支持将 Razor 文件生成到可打包为 NuGet 包的类库项目中。 应用可以自动发现和覆盖库中的视图和页面。 通过将 Razor 编译集成到生成中:
有关详细信息,请参阅使用 Razor 类库项目创建可重用 UI。
ASP.NET Core 2.1 提供 ASP.NET Core 标识作为 Razor 类库。 包含标识的应用可以应用新的标识基架,以便有选择地添加标识 Razor 类库 (RCL) 中包含的源代码。 建议生成源代码,以便修改代码和更改行为。 例如,可以指示基架生成在注册过程中使用的代码。 生成的代码优先于标识 RCL 中的相同代码。
不包含身份验证的应用可以应用标识基架以添加 RCL 标识包 。 可以选择要生成的标识代码。
有关详细信息,请参阅 ASP.NET Core 项目中的基架标识。
随着对安全和隐私的关注度日益增加,为 Web 应用启用 HTTPS 变得非常重要。 Web 上强制使用 HTTPS 的要求日趋严格。 不使用 HTTPS 的站点被视为不安全的站点。 浏览器(Chromium、Mozilla)开始强制要求必须在安全的上下文中使用 Web 功能。 GDPR 要求使用 HTTPS 保护用户隐私。 不仅在生产环境中使用 HTTPS 至关重要,而且在开发环境中使用 HTTPS 还可以帮助防止部署中的各种问题(例如,不安全的链接)。 ASP.NET Core 2.1 包含大量改进,更方便在开发环境使用 HTTPS 和在生产环境配置 HTTPS。 有关详细信息,请参阅强制使用 HTTPS。
为了提高网站开发的安全性,现在默认启用 HTTPS。 从 2.1 开始,当本地具有开发证书时,Kestrel 将侦听 https://localhost:5001
。 关于开发证书的创建:
dev-certs
工具。运行 dotnet dev-certs https --trust
以信任证书。
Web 应用通常需要侦听 HTTP 和 HTTPS,但随后会将所有 HTTP 流量重定向到 HTTPS。 在 2.1 中,引入了专用的 HTTPS 重定向中间件,可根据配置或绑定服务器端口的存在智能执行重定向。
使用 HTTP 严格传输安全协议 (HSTS) 可进一步强制使用 HTTPS。 HSTS 指示浏览器始终通过 HTTPS 访问站点。 ASP.NET Core 2.1 添加 HSTS 中间件,该中间件支持选择最大年限、子域和 HSTS 预加载列表。
在生产环境中,必须显式配置 HTTPS。 在 2.1 中,添加了针对 Kestrel 配置 HTTPS 的默认配置架构。 可以将应用配置为使用:
ASP.NET Core 提供 API 和模板,帮助满足欧盟一般数据保护条例 (GDPR) 的部分要求。 有关详细信息,请参阅 ASP.NET Core 中的 GDPR 支持。 示例应用演示如何使用并允许测试已添加到 ASP.NET Core 2.1 模板中的大多数 GDPR 扩展点和 API。
引入了可简化创建和执行测试的新包。 Microsoft.AspNetCore.Mvc.Testing 包可处理以下任务:
以下测试使用 xUnit 检查索引页是否加载了成功状态代码和正确的 Content-Type 标头:
public class BasicTests : IClassFixture<WebApplicationFactory<RazorPagesProject.Startup>> { private readonly HttpClient _client; public BasicTests(WebApplicationFactory<RazorPagesProject.Startup> factory) { _client = factory.CreateClient(); } [Fact] public async Task GetHomePage() { // Act var response = await _client.GetAsync("/"); // Assert response.EnsureSuccessStatusCode(); // Status Code 200-299 Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); } }
有关详细信息,请参阅集成测试主题。
ASP.NET Core 2.1 添加了新编程约定,方便构建简洁的说明性 Web API。 ActionResult<T>
是一个新增类型,可允许应用返回响应类型,或返回任何其他操作结果(与 IActionResult 相似),同时仍然指示响应类型。 此外还添加了 [ApiController]
特性,作为选择加入特定于 Web API 的约定和行为的方式。
有关详细信息,请参阅使用 ASP.NET Core 构建 Web API。
ASP.NET Core 2.1 引入了新的 IHttpClientFactory
服务,方便在应用中配置和使用 HttpClient
的实例。 HttpClient
已经具有委托处理程序的概念,这些委托处理程序可以链接在一起,处理出站 HTTP 请求。 工厂可以:
HttpClient
的实例变得更直观。有关详细信息,请参阅启动 HTTP 请求。
对于 ASP.NET Core 2.1 版,Kestrel 默认传输不再基于 Libuv,而是基于托管的套接字。 有关详细信息,请参阅 Kestrel Web 服务器实现:传输配置。
引入了通用主机生成器 (HostBuilder
)。 此生成器可用于不处理 HTTP 请求(消息传送、后台任务等等)的应用。
有关详细信息,请参阅 .NET 通用主机。
更新了适用于 Angular、React 和 React 结合 Redux 的单页应用程序模板,以使用标准项目结构和为每个框架构建系统。
Angular 模板基于 Angular CLI,而 React 模板基于 create-react-app。
有关详细信息,请参见:
在 2.1 中,Razor Pages 按所列顺序搜索以下目录中的 Razor 资产(例如布局和分区):
Razor Pages 现在支持区域。 要查看区域示例,请使用个人用户帐户创建新 Razor Pages Web 应用。 使用个人用户帐户的 Razor Pages Web 应用包括 /Areas/Identity/Pages 。
SetCompatibilityVersion 方法允许应用选择加入或退出 ASP.NET Core MVC 2.1 或更高版本中引入的潜在中断行为变更。
有关详细信息,请参阅 ASP.NET Core MVC 的兼容性版本。
请参阅从 ASP.NET Core 2.0 迁移到 2.1。
要获取完整的更改列表,请参阅 ASP.NET Core 2.1 发行说明。