ASP.NET Core 2.0 的新增功能

2019-04-17 08:56 更新

Razor 頁面

Razor 頁面是 ASP.NET Core MVC 的一個(gè)新功能,它可以使基于頁面的編碼方式更簡單高效。

有關(guān)詳細(xì)信息,請參閱相關(guān)介紹和教程:

ASP.NET Core 元包

新的 ASP.NET Core 元包包含 ASP.NET Core 和 Entity Framework 團(tuán)隊(duì)生成和提供支持的所有包及其內(nèi)部和第三方依賴項(xiàng)。 無需再通過包選擇單個(gè) ASP.NET Core 功能。 Microsoft.AspNetCore.All 包中包含所有的功能。 默認(rèn)模板使用此包。

有關(guān)詳細(xì)信息,請參閱 ASP.NET Core 2.0 的 Microsoft.AspNetCore.All 元包。

運(yùn)行時(shí)存儲

使用 Microsoft.AspNetCore.All 元包的應(yīng)用程序會自動使用新的 .NET Core 運(yùn)行時(shí)存儲。 此存儲包含運(yùn)行 ASP.NET Core 2.0 應(yīng)用程序所需的所有運(yùn)行時(shí)資產(chǎn)。 使用 Microsoft.AspNetCore.All 元包時(shí),應(yīng)用程序不會部署引用的 ASP.NET Core NuGet 包中的任何資產(chǎn),因?yàn)槟繕?biāo)系統(tǒng)中已存在這些資產(chǎn)。 運(yùn)行時(shí)存儲中的資產(chǎn)也已經(jīng)過預(yù)編譯,以便縮短應(yīng)用程序啟動時(shí)間。

有關(guān)詳細(xì)信息,請參閱運(yùn)行時(shí)存儲

.NET Standard 2.0

ASP.NET Core 2.0 包面向 NET Standard 2.0。 這些包可以由其他 .NET Standard 2.0 庫引用,也可以在兼容 .NET Standard 2.0 的 .NET 實(shí)現(xiàn)上運(yùn)行,其中包括 .NET Core 2.0 和 .NET Framework 4.6.1。

Microsoft.AspNetCore.All 元包僅面向 .NET Core 2.0,因?yàn)樗荚谂c .NET Core 2.0 運(yùn)行時(shí)存儲一起使用。

配置更新

在 ASP.NET Core 2.0 中,已默認(rèn)將 IConfiguration 實(shí)例添加到服務(wù)容器。 服務(wù)容器中的 IConfiguration 可以使應(yīng)用程序更輕松地從容器中檢索配置值。

有關(guān)已規(guī)劃文檔的狀態(tài)的信息,請參閱 GitHub 問題。

日志記錄更新

在 ASP.NET Core 2.0 中,已默認(rèn)將日志記錄并入依存關(guān)系注入 (DI) 系統(tǒng)。 在 Program.cs 文件(而非 Startup.cs 文件)中添加提供程序并配置篩選。 此外,默認(rèn)的 ILoggerFactory 支持進(jìn)行篩選,并且你可以使用靈活的方式來進(jìn)行跨提供程序篩選和特定于提供程序的篩選。

有關(guān)詳細(xì)信息,請參閱日志記錄介紹。

身份驗(yàn)證更新

新的身份驗(yàn)證模型簡化了使用 DI 為應(yīng)用程序配置身份驗(yàn)證的過程。

使用 [Azure AD B2C] (https://azure.microsoft.com/services/active-directory-b2c/)) 為 Web 應(yīng)用和 Web API 配置身份驗(yàn)證時(shí)可使用新模板。

有關(guān)已規(guī)劃文檔的狀態(tài)的信息,請參閱 GitHub 問題

標(biāo)識更新

在 ASP.NET Core 2.0 中,我們簡化了使用標(biāo)識生成安全的 Web API 的過程。 可以使用 Microsoft 身份驗(yàn)證庫 (MSAL)獲取用于訪問 Web API 的訪問令牌。

有關(guān) 2.0 中的身份驗(yàn)證更改的詳細(xì)信息,請參閱以下資源:

SPA 模板

已提供適用于 Angular、Aurelia、Knockout.js、React.js 及 React.js 和 Redux 的單頁應(yīng)用程序 (SPA) 項(xiàng)目模板。 Angular 模板已更新至 Angular 4。 默認(rèn)情況下,Angular 和 React 模板已可用;有關(guān)如何獲取其他模板的信息,請參閱新建 SPA 項(xiàng)目。 有關(guān)如何在 ASP.NET Core 中生成 SPA 的信息,請參閱使用 JavaScriptServices 創(chuàng)建單頁應(yīng)用程序

Kestrel 改進(jìn)

Kestrel Web 服務(wù)器包含一項(xiàng)新功能,使其更適合作為面向 Internet 的服務(wù)器。 在 KestrelServerOptions 類的新 Limits 屬性中添加大量服務(wù)器約束配置選項(xiàng)。 為以下內(nèi)容添加限制:

  • 客戶端最大連接數(shù)
  • 請求正文最大大小
  • 請求正文最小數(shù)據(jù)速率

有關(guān)詳細(xì)信息,請參閱 ASP.NET Core 中的 Kestrel Web 服務(wù)器實(shí)現(xiàn)。

WebListener 已重命名為 HTTP.sys

Microsoft.AspNetCore.Server.WebListener 和 Microsoft.Net.Http.Server 包已合并為一個(gè)新包 Microsoft.AspNetCore.Server.HttpSys。 命名空間已進(jìn)行更新以保持一致。

有關(guān)詳細(xì)信息,請參閱 ASP.NET Core 中的 HTTP.sys Web 服務(wù)器實(shí)現(xiàn)。

增強(qiáng)了 HTTP 標(biāo)頭支持

使用 MVC 傳輸 FileStreamResult 或 FileContentResult 時(shí),現(xiàn)在可以選擇對傳輸?shù)膬?nèi)容設(shè)置 ETag 或 LastModified 日期。 可以使用如下所示的代碼在返回的內(nèi)容上設(shè)置這些值:

C#

var data = Encoding.UTF8.GetBytes("This is a sample text from a binary array");
var entityTag = new EntityTagHeaderValue("\"MyCalculatedEtagValue\"");
return File(data, "text/plain", "downloadName.txt", lastModified: DateTime.UtcNow.AddSeconds(-5), entityTag: entityTag);

返回給訪問者的文件將附帶 ETag 和 LastModified 值的適當(dāng) HTTP 標(biāo)頭。

如果應(yīng)用程序訪問者使用范圍請求標(biāo)頭請求內(nèi)容,ASP.NET Core 將識別出該請求,并會處理該標(biāo)頭。 如果可以對請求的內(nèi)容執(zhí)行部分傳輸操作,ASP.NET Core 將適當(dāng)?shù)靥^一些內(nèi)容,只返回請求的字節(jié)集。 不必為了采用或處理此功能而將任何特殊的處理程序?qū)懭敕椒?;系統(tǒng)會自動處理。

托管啟動和 Application Insights

托管環(huán)境現(xiàn)在可以在應(yīng)用程序啟動時(shí)插入額外的包依賴項(xiàng)并執(zhí)行代碼,而應(yīng)用程序無需顯式使用依賴項(xiàng)或調(diào)用任何方法。 可以使用此功能來允許某些環(huán)境“啟用”該環(huán)境特有的功能,而應(yīng)用程序無需提前獲知。

在 ASP.NET Core 2.0 中,如果在 Visual Studio 中調(diào)試并且(選擇加入后)在 Azure App Services 中運(yùn)行,將使用此功能自動啟用 Application Insights 診斷。 因此,默認(rèn)情況下,項(xiàng)目模板不再添加 Application Insights 包和代碼。

有關(guān)已規(guī)劃文檔的狀態(tài)的信息,請參閱 GitHub 問題

自動使用防偽標(biāo)記

默認(rèn)情況下,ASP.NET Core 始終在幫助對內(nèi)容進(jìn)行 HTML 編碼,但是在新版本中,還采用了額外的措施來幫助預(yù)防跨網(wǎng)站請求偽造 (XSRF) 攻擊。 現(xiàn)在在默認(rèn)情況下,ASP.NET Core 會發(fā)出防偽標(biāo)記,并在窗體 POST 操作和頁面上驗(yàn)證它們,且無需其他配置。

有關(guān)詳細(xì)信息,請參閱預(yù)防跨網(wǎng)站請求偽造 (XSRF/CSRF) 攻擊。

自動預(yù)編譯

默認(rèn)情況下,會在發(fā)布時(shí)啟用 Razor 視圖預(yù)編譯,以縮減發(fā)布輸出大小和應(yīng)用程序啟動時(shí)間。

有關(guān)詳細(xì)信息,請參閱 ASP.NET Core 中的 Razor 視圖編譯和預(yù)編譯。

Razor 支持 C# 7.1

Razor 視圖引擎已更新為可使用新的 Roslyn 編譯器。 其中包含對 C# 7.1 功能的支持,例如默認(rèn)表達(dá)式、推斷元組名稱和泛型模式匹配。 若要在項(xiàng)目中使用 C# 7.1,請?jiān)陧?xiàng)目文件中添加以下屬性,然后重新加載解決方案:

XML

<LangVersion>latest</LangVersion>

有關(guān) C# 7.1 功能的狀態(tài)的信息,請參閱 Roslyn GitHub 存儲庫。

2.0 的其他文檔更新

遷移指南

有關(guān)如何將 ASP.NET Core 1.x 應(yīng)用程序遷移到 ASP.NET Core 2.0 的指南,請參閱以下資源:

其他信息

有關(guān)更改的完整列表,請參閱 ASP.NET Core 2.0 發(fā)行說明。

若要實(shí)時(shí)了解 ASP.NET Core 開發(fā)團(tuán)隊(duì)的進(jìn)度和計(jì)劃,請收看 ASP.NET Community Standup。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號