Neuerungen in ASP.NET Core 3.1

In diesem Artikel werden die wichtigsten Änderungen in ASP.NET Core 3.1 aufgezeigt und Links zur relevanten Dokumentation bereitgestellt.

Unterstützung von partiellen Klassen für Razor-Komponenten

Razor-Komponenten werden nun als partielle Klassen generiert. Der Code für eine Razor-Komponente kann nun mithilfe einer CodeBehind-Datei geschrieben werden, die als eine partielle Klasse definiert ist, anstatt den gesamten Code für die Komponente in einer einzelnen Datei zu definieren. Weitere Informationen finden Sie unter Unterstützung von partiellen Klassen.

-Komponententaghilfsprogramm und Übergeben von Parametern an Komponenten der obersten Ebene

In Blazor mit ASP.NET Core 3.0 wurden Komponenten mithilfe eines HTML-Hilfsprogramms (Html.RenderComponentAsync) in Seiten und Ansichten gerendert. In ASP.NET Core 3.1 werden Komponenten mithilfe eines neuen Komponententaghilfsprogramms in Seiten oder Ansichten gerendert:

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

Das HTML-Hilfsprogramm wird in ASP.NET Core 3.1 weiterhin unterstützt, jedoch wird die Verwendung des Komponententaghilfsprogramms empfohlen.

Blazor Server-Apps können nun während dem ersten Rendering Parameter an Komponenten der obersten Ebene übergeben. Zuvor konnten Sie Parameter nur an Komponenten der obersten Ebene mit RenderMode.Static übergeben. Ab diesem Release werden sowohl RenderMode.Server als auch RenderMode.ServerPrerendered unterstützt. Alle festgelegten Parameterwerte werden als JSON serialisiert und sind in der ersten Antwort enthalten.

So können Sie eine Counter-Komponente beispielsweise mit einem Inkrement vorab rendern (IncrementAmount):

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

Weitere Informationen finden Sie unter Integrieren von Komponenten in Razor-Seiten und MVC-Apps.

Unterstützung für freigegebene Warteschlangen in HTTP.sys

HTTP.sys unterstützt das Erstellen anonymer Anforderungswarteschlangen. In ASP.NET Core 3.1 haben wir die Möglichkeit hinzugefügt, eine existierende benannte HTTP.sys-Anforderungswarteschlange zu erstellen oder Elemente daran anzufügen. Das Erstellen einer benannten HTTP.sys-Anforderungswarteschlange bzw. das Anfügen von Elementen an eine solche ermöglicht Szenarien, in denen der HTTP.sys-Controllerprozess, der die Warteschlange besitzt, unabhängig vom Listenerprozess ist. Diese Unabhängigkeit ermöglicht die Beibehaltung vorhandener Verbindungen und in der Warteschlange eingereihter Anforderungen zwischen Neustarts des Listenerprozesses:

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

Breaking Changes für SameSite-cookies

Das Verhalten von SameSite-cookies wurde gemäß bevorstehender Browseränderungen geändert. Dies kann sich auf Authentifizierungsszenarios wie Azure AD, OpenIdConnect oder WsFederation auswirken. Weitere Informationen finden Sie unter Arbeiten mit cookies für SameSite in ASP.NET Core.

Verhindern von Standardaktionen für Ereignisse in Blazor-Apps

Verwenden Sie das Direktivenattribut @on{EVENT}:preventDefault, um die Standardaktion für ein Ereignis zu verhindern. Im folgenden Beispiel wird die Standardaktion verhindert, welche das Zeichen eines Schlüssels im Textfeld anzeigt:

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

Weitere Informationen finden Sie unter Verhindern von Standardaktionen.

Beenden der Ereignisweitergabe in Blazor-Apps

Verwenden Sie das Direktivenattribut @on{EVENT}:stopPropagation, um die Ereignisweitergabe zu beenden. Im folgenden Beispiel wird die Weitergabe von Klickereignissen vom untergeordneten <div>-Element an das übergeordnete <div>-Element verhindert, wenn das Kontrollkästchen aktiviert wird:

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

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

@code {
    private bool _stopPropagation = false;
}

Weitere Informationen finden Sie unter Beenden der Ereignisweitergabe.

Ausführliche Fehler bei der Entwicklung von Blazor-Apps

Wenn eine Blazor-App während der Entwicklung nicht ordnungsgemäß funktioniert, erhalten Sie nun ausführliche Fehlerinformationen von der App, die Sie beim Beheben des Problems unterstützen. Wenn ein Fehler auftritt, zeigen Blazor-Apps eine goldene Leiste am unteren Rand der Anzeige an:

  • Während der Entwicklung leitet die goldene Leiste Sie an die Browserkonsole weiter, in der die Ausnahme angezeigt wird.
  • In der Produktion benachrichtigt die goldene Leiste den Benutzer darüber, dass ein Fehler aufgetreten ist, und empfiehlt eine Aktualisierung des Browsers.

Weitere Informationen finden Sie unter Fehlerbehandlung in Blazor-Apps in ASP.NET Core.