如何在.net core中间件中获取RouteData?

yes*_*can 6 routes .net-core asp.net-core-middleware

我正在开发一个 .net core 应用程序。我试图访问中间件中的路由数据,但它总是返回 null。

在此输入图像描述

这是控制器基本路线

[Route("User/{UserId}/Quote")]
    public class QuoteController : ControllerBase
Run Code Online (Sandbox Code Playgroud)

我的目标是尝试在中间件中获取 UserId,我在其他地方使用它进行身份验证。我的问题是为什么 GetRouteData() 调用总是返回 null?

小智 4

路由数据由 MVC 中间件设置,该中间件在流的下游出现。您必须将 context.GetRouteData() 调用移至await next 调用之后的行才能访问路线数据。

请参阅/sf/answers/2980850841/上的图片以供参考。

奇怪的是,如果我将代码放在 UseMvc() 之后,它甚至不会到达这一行

一旦 MVC 中间件处理了请求,它就会将响应发送回客户端,并且不会处理管道中下一个中间件的控制。