【问题标题】:ASP.Net Web API: Content based routingASP.Net Web API:基于内容的路由
【发布时间】:2023-03-22 15:15:02
【问题描述】:

在 ASP.Net Web API 中执行“基于内容的路由”的可能方式有哪些?它是否提供了 WCF (WCF Content based routing) 提供的开箱即用的东西

【问题讨论】:

  • 我还没有看到任何允许这种情况发生的事情。 WebApi 的配置方式使其不会真正“检查”您发送的有效负载(因为您不能多次读取入站流)。你为什么不在控制器本身内有一个策略或其他东西来处理它?必须根据发送的有效负载扫描多个端点似乎很奇怪。
  • 我认为这将是一个不错的功能,路由将基于客户端提供的 Content-Type 标头的内容(类似于基于 http 动词的路由已经完成,这只是另一个http标头)。一个旁注@Chris - 多次读取相同的有效负载很容易,它只是一个流。您只需要记住在完成后执行 request.InputStream.Seek(0, SeekOrigin.Begin)。

标签: routing asp.net-web-api


【解决方案1】:

只需覆盖 ApiControllerActionSelector 类中的 SelectAction 方法,您可以在其中检查请求的内容并确定要使用的操作方法(使用反射)。然后,只需返回一个 ReflectedHttpActionDescriptor 实例,传入当前控制器上下文和反射动作方法的 MethodInfo。如果没有找到匹配的方法,只需调用 base 并返回该结果。

可以在此处找到示例:https://stackoverflow.com/a/16545954/1402786

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 2017-11-20
    • 2015-10-06
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多