Новые возможности в ASP.NET Core 3.1

В этой статье описываются наиболее важные изменения в ASP.NET Core 3.1 со ссылками на соответствующую документацию.

Поддержка разделяемых классов для компонентов Razor

Компоненты Razor теперь создаются как разделяемые классы. Код компонента Razor можно написать как файл кода программной части, определенный как разделяемый класс, вместо того чтобы определять весь код компонента в одном файле. Дополнительные сведения см. в разделе Поддержка разделяемых классов.

Вспомогательный компонент тега компонента и передача параметров компонентам верхнего уровня

В Blazor с ASP.NET Core 3.0 компоненты отрисовывались как страницы и представления с помощью вспомогательной функции HTML (Html.RenderComponentAsync). В ASP.NET Core 3.1 компонент отрисовывается из страницы или представления с помощью новой вспомогательной функции тега компонента:

<component type="typeof(Counter)" render-mode="ServerPrerendered" />

Вспомогательная функция HTML по-прежнему поддерживается в ASP.NET Core 3.1, но рекомендуется использовать вспомогательную функцию тега компонента.

Приложения Blazor Server теперь могут передавать параметры в компоненты верхнего уровня во время первоначальной отрисовки. Ранее параметры можно было передавать в компонент верхнего уровня только с помощью RenderMode.Static. В этом выпуске поддерживается как RenderMode.Server, так и RenderMode.ServerPrerendered. Все указанные значения параметров сериализуются в формат JSON и включаются в исходный ответ.

Например, компонент Counter может предварительно отрисовываться со значением приращения (IncrementAmount):

<component type="typeof(Counter)" render-mode="ServerPrerendered" 
    param-IncrementAmount="10" />

Дополнительные сведения см. в разделе Интеграция компонентов в Razor Pages и приложения MVC.

Поддержка общих очередей в HTTP.sys

HTTP.sys поддерживает создание анонимных очередей запросов. В ASP.NET Core 3.1 добавлена возможность создания именованной очереди запросов HTTP.sys или присоединения к существующей очереди. Создание именованной очереди запросов 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;
            });
        });

Критические изменения для файлов cookie SameSite

Поведение файлов cookie SameSite изменилось в соответствии с предстоящими изменениями в браузерах. Это может повлиять на сценарии проверки подлинности, такие как AzureAd, OpenIdConnect или WsFederation. Дополнительные сведения см. в статье Работа с файлами cookie SameSite в ASP.NET Core.

Запрет выполнения действий по умолчанию для событий в приложениях Blazor

Используйте атрибут директивы @on{EVENT}:preventDefault, чтобы запретить выполнение действия по умолчанию для события. В следующем примере запрещается действие по умолчанию, отображающее символ клавиши в текстовом поле:

<input value="@_count" @onkeypress="KeyHandler" @onkeypress:preventDefault />

Дополнительные сведения см. в разделе Запрет действий по умолчанию.

Остановка распространения событий в приложениях Blazor

Используйте атрибут директивы @on{EVENT}:stopPropagation, чтобы остановить распространение событий. В следующем примере установка флажка блокирует передачу событий щелчка мышью из дочернего элемента <div> в родительский элемент <div>.

<input @bind="_stopPropagation" type="checkbox" />

<div @onclick="OnSelectParentDiv">
    <div @onclick="OnSelectChildDiv" @onclick:stopPropagation="_stopPropagation">
        ...
    </div>
</div>

@code {
    private bool _stopPropagation = false;
}

Дополнительные сведения см. в разделе Отключение распространения событий.

Подробные сведения об ошибках во время разработки приложений Blazor

Если во время разработки приложение Blazor работает неправильно, подробные сведения об ошибках в приложении могут помочь в устранении неполадок. При возникновении ошибки в приложении Blazor в нижней части экрана отображается золотистая полоска.

  • Во время разработки из этой полоски можно перейти в консоль браузера, где можно просмотреть исключение.
  • В рабочей среде эта полоска уведомляет пользователя о том, что произошла ошибка, и рекомендует обновить содержимое окна браузера.

Дополнительные сведения см. в статье Обработка ошибок в приложениях Blazor ASP.NET Core.