Blazor: Logica di precedenza della route modificata nelle app Blazor

Un bug nell'implementazione del routing di Blazor ha interessato il modo in cui viene determinata la precedenza delle route. Questo bug influisce su route catch-all o route con parametri facoltativi all'interno dell'app Blazor.

Versione di introduzione

5.0.1

Comportamento precedente

Con il comportamento errato, le route con precedenza inferiore vengono considerate e abbinate rispetto alle route con precedenza più elevata. Ad esempio, la route {*slug} viene abbinata prima di /customer/{id}.

Nuovo comportamento

Il comportamento corrente corrisponde maggiormmente al comportamento di routing definito nelle app ASP.NET Core. Il framework determina innanzitutto la precedenza della route per ogni segmento. La lunghezza della route viene usata solo come secondo criterio per risolvere le situazioni di parità.

Motivo della modifica

Il comportamento originale è considerato un bug nell'implementazione. Come obiettivo, il sistema di routing nelle app Blazor deve avere lo stesso comportamento del sistema di routing nel resto di ASP.NET Core.

Se si esegue l'aggiornamento dalle versioni precedenti di Blazor alla versione 5.x, usare l'attributo PreferExactMatches nel componente Router. Questo attributo può essere usato per acconsentire esplicitamente al comportamento corretto. Ad esempio:

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

Quando PreferExactMatches è impostato su true, l'abbinamento delle route preferisce corrispondenze esatte rispetto ai caratteri jolly.

API interessate

Nessuno