ASP.NET Core 2.1 的新增功能

2019-04-17 08:56 更新

SignalR

已針對 ASP.NET Core 2.1 重新編寫 SignalR。 ASP.NET Core SignalR 包含大量改進:

  • 簡化橫向擴展模型。
  • 新 JavaScript 客戶端不具有 jQuery 依賴項。
  • 新緊湊型二進制協(xié)議基于 MessagePack。
  • 支持自定義協(xié)議。
  • 新的流式處理響應模型。
  • 支持基于裸機 WebSocket 的客戶端。

有關詳細信息,請參閱 ASP.NET Core SignalR。

Razor 類庫

通過 ASP.NET Core 2.1 可以更容易地在庫中生成和包括基于 Razor 的 UI,并跨多個項目共享 UI。 新 Razor SDK 支持將 Razor 文件生成到可打包為 NuGet 包的類庫項目中。 應用可以自動發(fā)現(xiàn)和覆蓋庫中的視圖和頁面。 通過將 Razor 編譯集成到生成中:

  • 應用啟動時間可顯著加快。
  • 在迭代開發(fā)工作流過程中,仍可在運行時快速更新 Razor 視圖和頁面。

有關詳細信息,請參閱使用 Razor 類庫項目創(chuàng)建可重用 UI

標識 UI 庫和基架

ASP.NET Core 2.1 提供 ASP.NET Core 標識作為 Razor 類庫。 包含標識的應用可以應用新的標識基架,以便有選擇地添加標識 Razor 類庫 (RCL) 中包含的源代碼。 建議生成源代碼,以便修改代碼和更改行為。 例如,可以指示基架生成在注冊過程中使用的代碼。 生成的代碼優(yōu)先于標識 RCL 中的相同代碼。

不包含身份驗證的應用可以應用標識基架以添加 RCL 標識包。 可以選擇要生成的標識代碼。

有關詳細信息,請參閱 ASP.NET Core 項目中的基架標識。

HTTPS

隨著對安全和隱私的關注度日益增加,為 Web 應用啟用 HTTPS 變得非常重要。 Web 上正在越來越嚴格要求強制使用 HTTPS。 不使用 HTTPS 的站點會被視為不安全的站點。 瀏覽器(Chromium、Mozilla)開始強制要求必須在安全的上下文中使用 Web 功能。 GDPR 要求使用 HTTPS 保護用戶隱私。 不僅在生產環(huán)境中使用 HTTPS 至關重要,而且在開發(fā)環(huán)境中使用 HTTPS 還可以幫助防止部署中的各種問題(例如,不安全的鏈接)。 ASP.NET Core 2.1 包含大量改進,更方便在開發(fā)環(huán)境使用 HTTPS 和在生產環(huán)境配置 HTTPS。 有關詳細信息,請參閱強制使用 HTTPS。

默認開啟

為了提高網站開發(fā)的安全性,現(xiàn)在默認啟用 HTTPS。 從 2.1 開始,當本地具有開發(fā)證書時,Kestrel 將偵聽 https://localhost:5001。 關于開發(fā)證書的創(chuàng)建:

  • 首次使用 SDK 時,在首次運行 .NET Core SDK 時會創(chuàng)建開發(fā)證書。
  • 手動使用新 dev-certs 工具。

運行 dotnet dev-certs https --trust 以信任證書。

HTTPS 重定向和強制使用

Web 應用通常需要偵聽 HTTP 和 HTTPS,但隨后會將所有 HTTP 流量重定向到 HTTPS。 在 2.1 中,引入了專用的 HTTPS 重定向中間件,可根據配置或綁定服務器端口的存在智能執(zhí)行重定向。

使用 HTTP 嚴格傳輸安全協(xié)議 (HSTS) 可進一步強制使用 HTTPS。 HSTS 指示瀏覽器始終通過 HTTPS 訪問站點。 ASP.NET Core 2.1 添加 HSTS 中間件,該中間件支持選擇最大年限、子域和 HSTS 預加載列表。

適用于生產環(huán)境的配置

在生產環(huán)境中,必須顯式配置 HTTPS。 在 2.1 中,添加了針對 Kestrel 配置 HTTPS 的默認配置架構??梢詫门渲脼槭褂茫?/p>

GDPR

ASP.NET Core 提供 API 和模板,幫助滿足歐盟一般數據保護條例 (GDPR) 的部分要求。 有關詳細信息,請參閱 ASP.NET Core 中的 GDPR 支持。 示例應用演示如何使用并允許測試已添加到 ASP.NET Core 2.1 模板中的大多數 GDPR 擴展點和 API。

集成測試

引入了可簡化創(chuàng)建和執(zhí)行測試的新包。 Microsoft.AspNetCore.Mvc.Testing 包可處理以下任務:

  • 將依賴項文件 (*.deps) 從已測試的應用復制到測試項目的 bin 文件夾中。
  • 將內容根目錄設置為已測試應用的項目根目錄,以便可在執(zhí)行測試時找到靜態(tài)文件和頁面/視圖。
  • 提供 WebApplicationFactory 類,以簡化已測試應用在 TestServer 中的啟動過程。

以下測試使用 xUnit 檢查索引頁是否加載了成功狀態(tài)代碼和正確的 Content-Type 標頭:

C#

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());
    }
}

有關詳細信息,請參閱集成測試主題。

[ApiController], ActionResult<T>

ASP.NET Core 2.1 添加了新編程約定,方便構建簡潔的說明性 Web API。 ActionResult<T> 是一個新增類型,可允許應用返回響應類型,或返回任何其他操作結果(與 IActionResult 相似),同時仍然指示響應類型。 此外還添加了 [ApiController] 特性,作為選擇加入特定于 Web API 的約定和行為的方式。

有關詳細信息,請參閱使用 ASP.NET Core 構建 Web API。

IHttpClientFactory

ASP.NET Core 2.1 引入了新的 IHttpClientFactory 服務,方便在應用中配置和使用 HttpClient 的實例。 HttpClient 已經具有委托處理程序的概念,這些委托處理程序可以鏈接在一起,處理出站 HTTP 請求。 工廠可以:

  • 使根據已命名客戶端注冊 HttpClient 的實例變得更直觀。
  • 實現(xiàn)一個 Polly 處理程序,允許將 Polly 策略用于 Retry、CircuitBreakers 等。

有關詳細信息,請參閱啟動 HTTP 請求

Kestrel 傳輸配置

對于 ASP.NET Core 2.1 版,Kestrel 默認傳輸不再基于 Libuv,而是基于托管的套接字。 有關詳細信息,請參閱 Kestrel Web 服務器實現(xiàn):傳輸配置

通用主機生成器

引入了通用主機生成器 (HostBuilder)。 此生成器可用于不處理 HTTP 請求(消息傳送、后臺任務等等)的應用。

有關詳細信息,請參閱 .NET 通用主機。

更新的 SPA 模板

更新了適用于 Angular、React 和 React 結合 Redux 的單頁應用程序模板,以使用標準項目結構和為每個框架構建系統(tǒng)。

Angular 模板基于 Angular CLI,而 React 模板基于 create-react-app。

有關詳細信息,請參見:

Razor Pages 搜索 Razor 資產

在 2.1 中,Razor Pages 按所列順序搜索以下目錄中的 Razor 資產(例如布局和分區(qū)):

  1. 當前 Pages 文件夾。
  2. /Pages/Shared/
  3. /Views/Shared/

某個區(qū)域內的 Razor Pages

Razor Pages 現(xiàn)在支持區(qū)域。 要查看區(qū)域示例,請使用個人用戶帳戶創(chuàng)建新 Razor Pages Web 應用。使用個人用戶帳戶的 Razor Pages Web 應用包括 /Areas/Identity/Pages。

MVC 兼容性版本

SetCompatibilityVersion 方法允許應用選擇加入或退出 ASP.NET Core MVC 2.1 或更高版本中引入的潛在中斷行為變更。

有關更多信息,請參見ASP.NET Core MVC 的兼容性版本

從 2.0 遷移到 2.1

請參閱從 ASP.NET Core 2.0 遷移到 2.1。

其他信息

要獲取完整的更改列表,請參閱 ASP.NET Core 2.1 發(fā)行說明。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號