首页 > 解决方案 > 如何在 .net 核心中间件中获取 RouteData?

问题描述

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

在此处输入图像描述

这是控制器的基本路线

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

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

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

解决方案


路由数据由 MVC 中间件设置,该中间件在下游进一步出现。您必须在 await next 调用之后将 context.GetRouteData() 调用移动到该行以访问路由数据。

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

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

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


推荐阅读