【譯】ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

.NET Core 3.1 Preview 1如今可用。此版本主要側重於錯誤修復,但同時也包含一些新功能。
這是此版本的ASP.NET Core的新增功能:git

  • 對Razor components的部分類支持
  • 將參數傳遞給頂級組件
  • 在HttpSysServer中支持共享隊列
  • 在SameSite cookies的重大更改

除了.NET Core 3.1 Preview版本發佈以外,咱們還發布了Blazor WebAssembly的更新,如今要求.NET Core 3.1. 若要使用Blazor WebAssembly,您須要安裝.NET Core 3.1 Preview 1以及Visual Studio的最新預覽版。github

有關其餘詳細信息和已知問題,請參見發行說明web

開始吧

要在.NET Core 3.1 Preview 1 中使用ASP.NET Core,須要安裝.NET Core Preview 1 SDK瀏覽器

若是你是在Windows上使用的Visual Studio,爲得到最佳體驗,建議你安裝Visual Studio 2019 16.4 的最新預覽版。安裝Visual Studio 2019 16.4 還將安裝上.NET Core 3.1 Preview 1,所以你無需單獨安裝它。爲在.NET Core 3.1 中使用Blazor 開發,Visual Studio 2019 16.4是必須的。cookie

要安裝最新的Blazor WebAssembly模板,請運行如下命令:app

dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview1.19508.20ui

升級現有項目

要將現有的ASP.NET Core 3.0項目升級到3.1 Preview 1:spa

  • 將全部針對netcoreapp3.0的項目更新爲netcoreapp3.1
  • 將全部Microsoft.AspNetCore.*軟件包引用更新爲3.1.0-preview1.19506.1

另請參閱ASP.NET Core 3.1中重大更改的完成列表。code

如今,您應該都已準備好使用.NET Core 3.1 Preview 1!component

對Razor components的部分類支持

Razor components如今做爲分佈類生成。你可使用定義爲局部類的代碼隱藏文件編寫Razor components的代碼,而不用在單個文件中定義該組件的全部代碼。

例如,不是用@code塊定義默認的Counter component,而是這樣:
Counter.razor

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
   int currentCount = 0;

   void IncrementCount()
   {
       currentCount++;
   }
}

如今,你可使用部分類將代碼分離爲代碼隱藏文件:
Counter.razor

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

Counter.razor.cs

namespace BlazorApp1.Pages
{
   public partial class Counter
   {
       int currentCount = 0;

       void IncrementCount()
       {
           currentCount++;
       }
   }
}

將參數傳遞給頂級組件

如今,Blazor Server應用程序能夠在初始渲染期間將參數傳遞給頂級組件(top-level components)。之前,你只能使用RenderMode.Static將參數傳遞給頂級組件。在這次發佈的版本中,同時支持RenderMode.ServerRenderModel.ServerPrerendered。任何指定的參數值都將序列化爲JSON,幷包含在初始響應中。

例如,你可使用特定的當前計數來渲染Counter組件,以下所示

@(await Html.RenderComponentAsync<Counter>(RenderMode.ServerPrerendered, new { CurrentCount = 123 }))

在HttpSysServer中支持共享隊列

除了HttpSysServer建立匿名請求隊列的現有行爲外,咱們還添加了建立或附加到現有命名HTTP.sys 請求隊列的功能。
這應該啓用一下方案:擁有隊列的HTTP.Sys控制器進程獨立於偵聽器進程,從而能夠在跨多個偵聽器進程從新啓動之間保留現有的鏈接和排隊的請求。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            // ...
            webBuilder.UseHttpSys(options =>
            {
                options.RequestQueueName = "MyExistingQueue",
                options.RequestQueueMode = RequestQueueMode.CreateOrAttach
            })
        });

在SameSite cookies的重大更改

此版本更新了ASP.NET Core中SameSite cookie的行爲,以符合瀏覽器強制執行的最新標準。有關這些更改及其對現有應用程序的影響的詳細信息,請參見https://github.com/aspnet/Announcements/issues/390。

給予反饋

咱們但願您喜歡此ASP.NET Core預覽版中的新功能!經過在GitHub上提交問題,請讓咱們知道您的想法。

感謝您試用ASP.NET Core!

相關文章
相關標籤/搜索