中间件中的路由控制器和动作
Posted
技术标签:
【中文标题】中间件中的路由控制器和动作【英文标题】: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")
以查找控制器是否为美国且操作为华盛顿。
【参考方案1】:
动作/控制器上下文非常特定于中间件管道的 MVC 部分。无法在 MVC 管道本身之外检索路由数据。
为了实现所需的行为,您应该考虑实现一个 ActionFilter:https://docs.asp.net/en/latest/mvc/controllers/filters.html
【讨论】:
这正是我想要的!我设法通过使用 ActionFilter 来操纵动作结果,这解决了我的问题。以上是关于中间件中的路由控制器和动作的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC教程五:ASP.NET MVC中的路由