【问题标题】:How to get RouteData inside a .net core middleware?如何在 .net 核心中间件中获取 RouteData?
【发布时间】:2018-12-21 07:26:57
【问题描述】:

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

这是控制器的基本路由

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

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

【问题讨论】:

  • 如果您在UseMvc 之前执行此操作,那么我认为您将无法访问路由。
  • 奇怪的是,如果我把代码放在 UseMvc() 之后,它甚至没有到达这一行。
  • 我的经历和@yesIcan完全一样

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


【解决方案1】:

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

参考图片https://stackoverflow.com/a/42583583/2108241

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多