Asp.net core 在混合路由方案中,哪个路由器首先处理传入请求

Asp.net core 在混合路由方案中,哪个路由器首先处理传入请求,asp.net-core,asp.net-routing,Asp.net Core,Asp.net Routing,我知道对于传统的路由,请求首先命中mvcmiddleware,然后路由器会将请求与预定义的模板进行比较 如果找到匹配的,则从请求中提取路由值,并将其分配给所选模板的路由参数。控制器和操作路由参数随后用于查找请求的路由 另一方面,属性路由url在运行时计算并作为url和关联操作的键值对存储在字典中,当请求命中mvcmiddleware时,它会检查请求url是否是字典中的键并调用关联操作 但是当请求到达mvcmiddleaware时,我们定义了两种路由类型,哪个路由器倾向于首先处理请求?根据我的理解

我知道对于传统的路由,请求首先命中mvcmiddleware,然后路由器会将请求与预定义的模板进行比较

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

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


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

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


为了确保先评估哪一个,我建议使用路由调试器,如。通过调用
useroutedbugger
可以在响应标题中看到解析的路由规则。

请阅读这篇ASP.NET路由文章。我,但它并没有回答我关于哪个路由器首先尝试处理请求的问题。你的意思是说传统路由有它自己的中间件,属性路由也有它自己的中间件?@GodfredBoateng是的。常规:对于.NET Core 2.x,有一个名为
UseMvcWithDefaultRoute
的扩展方法。对于.NET Core 3.x,您必须将
UseMvc
UseEndpoints
一起使用。属性:对于.NET Core 2.x,在.NET 3.x中有
UseEndpointRouting
,在.NET Core 2.x中有
UseRouting
。请查看以下文件的源代码以了解更多详细信息:
mvcapapplicationbuilderextensions
EndpointRoutingApplicationBuilderExtensions
My bad,当您提到中间件时,我直接想到了管道it本身,当然,属性路由和常规将有自己的中间件。你的回答满足了我的问题。谢谢你的时间。@GodfredBoateng如果它满足了你的问题,那么你会很友好,并将它标记为答案。谢谢你,伙计。