在混合路由场景中哪个路由器首先处理传入请求

Which router handles incoming request first in a mixed routing scenario

我了解常规路由,请求首先命中 mvcmidleware,然后路由器会将请求与预定义模板进行比较。

如果找到匹配的路由值,将从请求中提取路由值并将其分配给所选模板的路由参数。然后使用控制器和操作路由参数来查找请求的路由。

而另一方面,属性路由 url 是在运行时计算的,并作为 url 的键值对和关联的操作存储在字典中,并且当请求命中 mvcmiddleware 时,它检查请求 url 是否是字典中的键并调用关联的操作。

但是当请求到达我们定义了两种路由类型的 mvcmiddleaware 时,哪个路由器倾向于首先处理请求?

据我了解,传统路由和基于属性的路由都使用中间件。我假设路由规则评估遵循中间件注册。因此,如果首先配置基于路由的中间件 (UseRouting),则应首先评估其规则。

为了确保先评估哪个,我建议使用路由调试器,例如 this, blog post。通过调用 UseRouteDebugger,您将能够在响应 header.

中看到已解析的路由规则