ASP.NET Core 2.0 的新增功能

2019-04-17 08:56 更新

Razor 頁面

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

有關詳細信息,請參閱相關介紹和教程:

ASP.NET Core 元包

新的 ASP.NET Core 元包包含 ASP.NET Core 和 Entity Framework 團隊生成和提供支持的所有包及其內部和第三方依賴項。 無需再通過包選擇單個 ASP.NET Core 功能。 Microsoft.AspNetCore.All 包中包含所有的功能。 默認模板使用此包。

有關詳細信息,請參閱 ASP.NET Core 2.0 的 Microsoft.AspNetCore.All 元包。

運行時存儲

使用 Microsoft.AspNetCore.All 元包的應用程序會自動使用新的 .NET Core 運行時存儲。 此存儲包含運行 ASP.NET Core 2.0 應用程序所需的所有運行時資產。 使用 Microsoft.AspNetCore.All 元包時,應用程序不會部署引用的 ASP.NET Core NuGet 包中的任何資產,因為目標系統(tǒng)中已存在這些資產。 運行時存儲中的資產也已經過預編譯,以便縮短應用程序啟動時間。

有關詳細信息,請參閱運行時存儲

.NET Standard 2.0

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

Microsoft.AspNetCore.All 元包僅面向 .NET Core 2.0,因為它旨在與 .NET Core 2.0 運行時存儲一起使用。

配置更新

在 ASP.NET Core 2.0 中,已默認將 IConfiguration 實例添加到服務容器。 服務容器中的 IConfiguration 可以使應用程序更輕松地從容器中檢索配置值。

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

日志記錄更新

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

有關詳細信息,請參閱日志記錄介紹。

身份驗證更新

新的身份驗證模型簡化了使用 DI 為應用程序配置身份驗證的過程。

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

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

標識更新

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

有關 2.0 中的身份驗證更改的詳細信息,請參閱以下資源:

SPA 模板

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

Kestrel 改進

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

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

有關詳細信息,請參閱 ASP.NET Core 中的 Kestrel Web 服務器實現(xiàn)

WebListener 已重命名為 HTTP.sys

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

有關詳細信息,請參閱 ASP.NET Core 中的 HTTP.sys Web 服務器實現(xiàn)。

增強了 HTTP 標頭支持

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

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 值的適當 HTTP 標頭。

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

托管啟動和 Application Insights

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

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

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

自動使用防偽標記

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

有關詳細信息,請參閱預防跨網站請求偽造 (XSRF/CSRF) 攻擊

自動預編譯

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

有關詳細信息,請參閱 ASP.NET Core 中的 Razor 視圖編譯和預編譯

Razor 支持 C# 7.1

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

XML

<LangVersion>latest</LangVersion>

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

2.0 的其他文檔更新

遷移指南

有關如何將 ASP.NET Core 1.x 應用程序遷移到 ASP.NET Core 2.0 的指南,請參閱以下資源:

其他信息

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

若要實時了解 ASP.NET Core 開發(fā)團隊的進度和計劃,請收看 ASP.NET Community Standup。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號