已針對 ASP.NET Core 2.1 重新編寫 SignalR。 ASP.NET Core SignalR 包含大量改進:
有關(guān)詳細信息,請參閱 ASP.NET Core SignalR。
通過 ASP.NET Core 2.1 可以更容易地在庫中生成和包括基于 Razor 的 UI,并跨多個項目共享 UI。 新 Razor SDK 支持將 Razor 文件生成到可打包為 NuGet 包的類庫項目中。 應(yīng)用可以自動發(fā)現(xiàn)和覆蓋庫中的視圖和頁面。 通過將 Razor 編譯集成到生成中:
有關(guān)詳細信息,請參閱使用 Razor 類庫項目創(chuàng)建可重用 UI。
ASP.NET Core 2.1 提供 ASP.NET Core 標識作為 Razor 類庫。 包含標識的應(yīng)用可以應(yīng)用新的標識基架,以便有選擇地添加標識 Razor 類庫 (RCL) 中包含的源代碼。 建議生成源代碼,以便修改代碼和更改行為。 例如,可以指示基架生成在注冊過程中使用的代碼。 生成的代碼優(yōu)先于標識 RCL 中的相同代碼。
不包含身份驗證的應(yīng)用可以應(yīng)用標識基架以添加 RCL 標識包。 可以選擇要生成的標識代碼。
有關(guān)詳細信息,請參閱 ASP.NET Core 項目中的基架標識。
隨著對安全和隱私的關(guān)注度日益增加,為 Web 應(yīng)用啟用 HTTPS 變得非常重要。 Web 上正在越來越嚴格要求強制使用 HTTPS。 不使用 HTTPS 的站點會被視為不安全的站點。 瀏覽器(Chromium、Mozilla)開始強制要求必須在安全的上下文中使用 Web 功能。 GDPR 要求使用 HTTPS 保護用戶隱私。 不僅在生產(chǎn)環(huán)境中使用 HTTPS 至關(guān)重要,而且在開發(fā)環(huán)境中使用 HTTPS 還可以幫助防止部署中的各種問題(例如,不安全的鏈接)。 ASP.NET Core 2.1 包含大量改進,更方便在開發(fā)環(huán)境使用 HTTPS 和在生產(chǎn)環(huán)境配置 HTTPS。 有關(guān)詳細信息,請參閱強制使用 HTTPS。
為了提高網(wǎng)站開發(fā)的安全性,現(xiàn)在默認啟用 HTTPS。 從 2.1 開始,當本地具有開發(fā)證書時,Kestrel 將偵聽 https://localhost:5001。 關(guān)于開發(fā)證書的創(chuàng)建:
運行 dotnet dev-certs https --trust 以信任證書。
Web 應(yīng)用通常需要偵聽 HTTP 和 HTTPS,但隨后會將所有 HTTP 流量重定向到 HTTPS。 在 2.1 中,引入了專用的 HTTPS 重定向中間件,可根據(jù)配置或綁定服務(wù)器端口的存在智能執(zhí)行重定向。
使用 HTTP 嚴格傳輸安全協(xié)議 (HSTS) 可進一步強制使用 HTTPS。 HSTS 指示瀏覽器始終通過 HTTPS 訪問站點。 ASP.NET Core 2.1 添加 HSTS 中間件,該中間件支持選擇最大年限、子域和 HSTS 預加載列表。
在生產(chǎn)環(huán)境中,必須顯式配置 HTTPS。 在 2.1 中,添加了針對 Kestrel 配置 HTTPS 的默認配置架構(gòu)??梢詫?yīng)用配置為使用:
ASP.NET Core 提供 API 和模板,幫助滿足歐盟一般數(shù)據(jù)保護條例 (GDPR) 的部分要求。 有關(guān)詳細信息,請參閱 ASP.NET Core 中的 GDPR 支持。 示例應(yīng)用演示如何使用并允許測試已添加到 ASP.NET Core 2.1 模板中的大多數(shù) GDPR 擴展點和 API。
引入了可簡化創(chuàng)建和執(zhí)行測試的新包。 Microsoft.AspNetCore.Mvc.Testing 包可處理以下任務(wù):
以下測試使用 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());
}
}
有關(guān)詳細信息,請參閱集成測試主題。
ASP.NET Core 2.1 添加了新編程約定,方便構(gòu)建簡潔的說明性 Web API。 ActionResult<T> 是一個新增類型,可允許應(yīng)用返回響應(yīng)類型,或返回任何其他操作結(jié)果(與 IActionResult 相似),同時仍然指示響應(yīng)類型。 此外還添加了 [ApiController] 特性,作為選擇加入特定于 Web API 的約定和行為的方式。
有關(guān)詳細信息,請參閱使用 ASP.NET Core 構(gòu)建 Web API。
ASP.NET Core 2.1 引入了新的 IHttpClientFactory 服務(wù),方便在應(yīng)用中配置和使用 HttpClient 的實例。 HttpClient 已經(jīng)具有委托處理程序的概念,這些委托處理程序可以鏈接在一起,處理出站 HTTP 請求。 工廠可以:
有關(guān)詳細信息,請參閱啟動 HTTP 請求。
對于 ASP.NET Core 2.1 版,Kestrel 默認傳輸不再基于 Libuv,而是基于托管的套接字。 有關(guān)詳細信息,請參閱 Kestrel Web 服務(wù)器實現(xiàn):傳輸配置。
引入了通用主機生成器 (HostBuilder)。 此生成器可用于不處理 HTTP 請求(消息傳送、后臺任務(wù)等等)的應(yīng)用。
有關(guān)詳細信息,請參閱 .NET 通用主機。
更新了適用于 Angular、React 和 React 結(jié)合 Redux 的單頁應(yīng)用程序模板,以使用標準項目結(jié)構(gòu)和為每個框架構(gòu)建系統(tǒng)。
Angular 模板基于 Angular CLI,而 React 模板基于 create-react-app。
有關(guān)詳細信息,請參見:
在 2.1 中,Razor Pages 按所列順序搜索以下目錄中的 Razor 資產(chǎn)(例如布局和分區(qū)):
Razor Pages 現(xiàn)在支持區(qū)域。 要查看區(qū)域示例,請使用個人用戶帳戶創(chuàng)建新 Razor Pages Web 應(yīng)用。使用個人用戶帳戶的 Razor Pages Web 應(yīng)用包括 /Areas/Identity/Pages。
SetCompatibilityVersion 方法允許應(yīng)用選擇加入或退出 ASP.NET Core MVC 2.1 或更高版本中引入的潛在中斷行為變更。
有關(guān)更多信息,請參見ASP.NET Core MVC 的兼容性版本。
請參閱從 ASP.NET Core 2.0 遷移到 2.1。
要獲取完整的更改列表,請參閱 ASP.NET Core 2.1 發(fā)行說明。
更多建議: