配置ASP.NET核心路由器运行匹配多个中间件

时间:2016-06-26 02:17:54

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

我正在尝试使用Microsoft.AspNetCore.Routing与多个可以匹配的widdleware。例如:

builder.MapRoute(" api",async c => {})//匹配所有api调用

builder.MapRoute(" api / user",async c => {})//只有api / user

builder.MapRoute(" api / client",async c => {})//只有api / client

但目前他们中只有一个可以匹配。

如果我要制作MapRoute(" api / {* postfix}",处理程序),那么只有处理程序才会运行并且api /客户端和api /用户不会。

有没有办法处理多个匹配?

1 个答案:

答案 0 :(得分:4)

首先尝试注册公共中间件,例如通过使用.MapWhen(...)并在该中间件中放置您的.MapRoute(..)子中间件。注册中间件的顺序很重要,您还需要了解“分支”的工作原理:

https://docs.asp.net/en/latest/fundamentals/middleware.html

  

除了基于路径的映射之外,MapWhen方法还支持基于谓词的中间件分支,允许以非常灵活的方式构造单独的管道。任何类型为Func的谓词都可用于将请求映射到管道的新分支。

观看此视频解释概念:

The basics of middleware in ASP.NET Core