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

时间:2018-07-13 00:40:05

标签: routing .net-core asp.net-core-middleware

我正在开发.net核心应用程序。我正在尝试访问中间件中的路由数据,但它始终返回null。

enter image description here

这是控制器的基本路线

[Route("User/{UserId}/Quote")]
    public class QuoteController : ControllerBase

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

1 个答案:

答案 0 :(得分:1)

路由数据是由MVC中间件设置的,该中间件会在下游显示出来。您必须将context.GetRouteData()调用移至等待下一个调用之后的行以访问路由数据。

请参见https://stackoverflow.com/a/42583583/2108241上的图片以供参考。

  

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

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