Blazor: Logik für die Routingrangfolge in Blazor-Apps geändert

Ein Fehler in der Blazor-Routingimplementierung hat die Bestimmung der Rangfolge von Routen beeinträchtigt. Dieser Fehler betraf Catch-All-Routen oder Routen mit optionalen Parametern in Blazor-Apps.

Eingeführt in Version

5.0.1

Altes Verhalten

Durch das fehlerhafte Verhalten werden Routen mit niedrigerem Rang gegenüber Routen mit höherem Rang bevorzugt berücksichtigt und abgeglichen. Beispielsweise wird die Route {*slug} vor /customer/{id} abgeglichen.

Neues Verhalten

Das aktuelle Verhalten stimmt stärker mit dem Routingverhalten überein, das in ASP.NET Core-Apps definiert ist. Das Framework bestimmt zuerst die Rangfolge der Routen für die einzelnen Segmente. Die Länge der Route wird nur als zweites Kriterium verwendet, wenn zwei Routen denselben Rang haben.

Grund für die Änderung

Das ursprüngliche Verhalten wird in der Implementierung als Fehler betrachtet. Ziel ist es, dass sich das Routingsystem in Blazor-Apps genauso verhält wie im Rest von ASP.NET Core.

Wenn Sie ein Upgrade von früheren Versionen von Blazor auf Version 5.x durchführen, sollten Sie das Attribut PreferExactMatches für die Komponente Router verwenden. Dieses Attribut kann verwendet werden, um das richtige Verhalten zu aktivieren. Beispiel:

<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="true">

Wenn PreferExactMatches auf true festgelegt ist, bevorzugt die Routenzuordnung exakte Übereinstimmungen gegenüber Platzhaltern.

Betroffene APIs

Keine