Blazor:Blazor 应用中已更改路由优先逻辑

Blazor 路由实现中的 bug 影响了路由优先级的确定方式。 此 bug 会影响 Blazor 应用内的 catch-all 路由或带可选参数的路由。

引入的版本

5.0.1

旧行为

发生错误行为时,系统将优先考虑并匹配优先级较低的路由,而不是优先级较高的路由。 例如,它会先匹配 /customer/{id} 路由,后匹配 {*slug} 路由。

新行为

当前的行为会更精确地匹配 ASP.NET Core 应用中定义的路由。 框架首先确定每个网段的路由优先级。 路由的长度仅用作与中断相关的第二个条件。

更改原因

最初的行为被视为实现中的一个 bug。 作为目标,Blazor 应用中路由系统的行为方式应与其他 ASP.NET Core 中路由系统的行为方式相同。

如果从 Blazor 的早期版本升级到 5.x,请使用 Router 组件上的 PreferExactMatches 属性。 此属性可用于选择正确的行为。 例如:

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

如果将 PreferExactMatches 设置为 true,则路由匹配将优先选取精确匹配而非通配符匹配。

受影响的 API