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.
Empfohlene Maßnahme
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. Zum 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