Razor 頁(yè)面是 ASP.NET Core MVC 的一個(gè)新功能,它可以使基于頁(yè)面的編碼方式更簡(jiǎn)單高效。
有關(guān)詳細(xì)信息,請(qǐng)參閱相關(guān)介紹和教程:
新的 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ì)信息,請(qǐng)參閱 ASP.NET Core 2.0 的 Microsoft.AspNetCore.All 元包。
使用 Microsoft.AspNetCore.All 元包的應(yīng)用程序會(huì)自動(dòng)使用新的 .NET Core 運(yùn)行時(shí)存儲(chǔ)。 此存儲(chǔ)包含運(yùn)行 ASP.NET Core 2.0 應(yīng)用程序所需的所有運(yùn)行時(shí)資產(chǎn)。 使用 Microsoft.AspNetCore.All 元包時(shí),應(yīng)用程序不會(huì)部署引用的 ASP.NET Core NuGet 包中的任何資產(chǎn),因?yàn)槟繕?biāo)系統(tǒng)中已存在這些資產(chǎn)。 運(yùn)行時(shí)存儲(chǔ)中的資產(chǎn)也已經(jīng)過預(yù)編譯,以便縮短應(yīng)用程序啟動(dòng)時(shí)間。
有關(guān)詳細(xì)信息,請(qǐng)參閱運(yùn)行時(shí)存儲(chǔ)
ASP.NET Core 2.0 包面向 NET Standard 2.0。 這些包可以由其他 .NET Standard 2.0 庫(kù)引用,也可以在兼容 .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í)存儲(chǔ)一起使用。
在 ASP.NET Core 2.0 中,已默認(rèn)將 IConfiguration 實(shí)例添加到服務(wù)容器。 服務(wù)容器中的 IConfiguration 可以使應(yīng)用程序更輕松地從容器中檢索配置值。
有關(guān)已規(guī)劃文檔的狀態(tài)的信息,請(qǐng)參閱 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ì)信息,請(qǐng)參閱日志記錄介紹。
新的身份驗(yàn)證模型簡(jiǎ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)的信息,請(qǐng)參閱 GitHub 問題。
在 ASP.NET Core 2.0 中,我們簡(jiǎn)化了使用標(biāo)識(shí)生成安全的 Web API 的過程。 可以使用 Microsoft 身份驗(yàn)證庫(kù) (MSAL)獲取用于訪問 Web API 的訪問令牌。
有關(guān) 2.0 中的身份驗(yàn)證更改的詳細(xì)信息,請(qǐng)參閱以下資源:
已提供適用于 Angular、Aurelia、Knockout.js、React.js 及 React.js 和 Redux 的單頁(yè)應(yīng)用程序 (SPA) 項(xiàng)目模板。 Angular 模板已更新至 Angular 4。 默認(rèn)情況下,Angular 和 React 模板已可用;有關(guān)如何獲取其他模板的信息,請(qǐng)參閱新建 SPA 項(xiàng)目。 有關(guān)如何在 ASP.NET Core 中生成 SPA 的信息,請(qǐng)參閱使用 JavaScriptServices 創(chuàng)建單頁(yè)應(yīng)用程序。
Kestrel Web 服務(wù)器包含一項(xiàng)新功能,使其更適合作為面向 Internet 的服務(wù)器。 在 KestrelServerOptions 類的新 Limits 屬性中添加大量服務(wù)器約束配置選項(xiàng)。 為以下內(nèi)容添加限制:
有關(guān)詳細(xì)信息,請(qǐng)參閱 ASP.NET Core 中的 Kestrel Web 服務(wù)器實(shí)現(xiàn)。
Microsoft.AspNetCore.Server.WebListener 和 Microsoft.Net.Http.Server 包已合并為一個(gè)新包 Microsoft.AspNetCore.Server.HttpSys。 命名空間已進(jìn)行更新以保持一致。
有關(guān)詳細(xì)信息,請(qǐng)參閱 ASP.NET Core 中的 HTTP.sys Web 服務(wù)器實(shí)現(xiàn)。
使用 MVC 傳輸 FileStreamResult 或 FileContentResult 時(shí),現(xiàn)在可以選擇對(duì)傳輸?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)用程序訪問者使用范圍請(qǐng)求標(biāo)頭請(qǐng)求內(nèi)容,ASP.NET Core 將識(shí)別出該請(qǐng)求,并會(huì)處理該標(biāo)頭。 如果可以對(duì)請(qǐng)求的內(nèi)容執(zhí)行部分傳輸操作,ASP.NET Core 將適當(dāng)?shù)靥^一些內(nèi)容,只返回請(qǐng)求的字節(jié)集。 不必為了采用或處理此功能而將任何特殊的處理程序?qū)懭敕椒?;系統(tǒng)會(huì)自動(dòng)處理。
托管環(huán)境現(xiàn)在可以在應(yīng)用程序啟動(dò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)行,將使用此功能自動(dòng)啟用 Application Insights 診斷。 因此,默認(rèn)情況下,項(xiàng)目模板不再添加 Application Insights 包和代碼。
有關(guān)已規(guī)劃文檔的狀態(tài)的信息,請(qǐng)參閱 GitHub 問題。
默認(rèn)情況下,ASP.NET Core 始終在幫助對(duì)內(nèi)容進(jìn)行 HTML 編碼,但是在新版本中,還采用了額外的措施來幫助預(yù)防跨網(wǎng)站請(qǐng)求偽造 (XSRF) 攻擊。 現(xiàn)在在默認(rèn)情況下,ASP.NET Core 會(huì)發(fā)出防偽標(biāo)記,并在窗體 POST 操作和頁(yè)面上驗(yàn)證它們,且無需其他配置。
有關(guān)詳細(xì)信息,請(qǐng)參閱預(yù)防跨網(wǎng)站請(qǐng)求偽造 (XSRF/CSRF) 攻擊。
默認(rèn)情況下,會(huì)在發(fā)布時(shí)啟用 Razor 視圖預(yù)編譯,以縮減發(fā)布輸出大小和應(yīng)用程序啟動(dòng)時(shí)間。
有關(guān)詳細(xì)信息,請(qǐng)參閱 ASP.NET Core 中的 Razor 視圖編譯和預(yù)編譯。
Razor 視圖引擎已更新為可使用新的 Roslyn 編譯器。 其中包含對(duì) C# 7.1 功能的支持,例如默認(rèn)表達(dá)式、推斷元組名稱和泛型模式匹配。 若要在項(xiàng)目中使用 C# 7.1,請(qǐng)?jiān)陧?xiàng)目文件中添加以下屬性,然后重新加載解決方案:
XML
<LangVersion>latest</LangVersion>
有關(guān) C# 7.1 功能的狀態(tài)的信息,請(qǐng)參閱 Roslyn GitHub 存儲(chǔ)庫(kù)。
有關(guān)如何將 ASP.NET Core 1.x 應(yīng)用程序遷移到 ASP.NET Core 2.0 的指南,請(qǐng)參閱以下資源:
有關(guān)更改的完整列表,請(qǐng)參閱 ASP.NET Core 2.0 發(fā)行說明。
若要實(shí)時(shí)了解 ASP.NET Core 開發(fā)團(tuán)隊(duì)的進(jìn)度和計(jì)劃,請(qǐng)收看 ASP.NET Community Standup。
更多建議: