【问题标题】:Route controller and action in middleware中间件中的路由控制器和动作
【发布时间】:2017-01-13 03:11:50
【问题描述】:

我正在尝试检索控制器和操作,我已经尝试使用

var routeData = context.GetRouteData();

在中间件的 Invoke 方法中,但每次都产生 null。

有没有可能在中间件中检索路由数据?

我想要实现的是检查请求的操作是否具有 [RequireToken] 属性,如果是,它将检查传入标头中是否有特定令牌。

【问题讨论】:

  • 不可以在中间件中获取路由数据。但是,您可以执行以下操作:-if (httpContext.Request.Path.ToString() == "/USA/Washington") 以查找控制器是否为美国且操作为华盛顿。

标签: c# asp.net asp.net-core asp.net-core-1.0 asp.net-core-webapi


【解决方案1】:

动作/控制器上下文非常特定于中间件管道的 MVC 部分。无法在 MVC 管道本身之外检索路由数据。

为了实现所需的行为,您应该考虑实现一个 ActionFilter:https://docs.asp.net/en/latest/mvc/controllers/filters.html

【讨论】:

  • 这正是我想要的!我设法通过使用 ActionFilter 来操纵动作结果,这解决了我的问题。
猜你喜欢
  • 2018-03-09
  • 2017-12-18
  • 2018-02-25
  • 2011-12-11
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
相关资源
最近更新 更多