我正在尝试使用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 /用户不会。
有没有办法处理多个匹配?
答案 0 :(得分:4)
首先尝试注册公共中间件,例如通过使用.MapWhen(...)
并在该中间件中放置您的.MapRoute(..)
子中间件。注册中间件的顺序很重要,您还需要了解“分支”的工作原理:
https://docs.asp.net/en/latest/fundamentals/middleware.html
除了基于路径的映射之外,MapWhen方法还支持基于谓词的中间件分支,允许以非常灵活的方式构造单独的管道。任何类型为Func的谓词都可用于将请求映射到管道的新分支。
观看此视频解释概念: