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