Web api 路由两个控制器类似的操作和参数未在一个操作中填充参数值

本文关键字:参数 操作 填充 一个 路由 api 两个 控制器 Web | 更新日期: 2023-09-27 18:36:01

我有两个webapi控制器控制器A和控制器B。每个都有一个开机自检操作,即

控制器A

[HttpPost]
public HttpResponseMessage Action1(CustomObjectA req, string pan="")

控制器B

 [HttpPost]
 public HttpResponseMessage Action2(CustomObjectB req, string mpxn="")

我的 Web API 路由如下所示

  config.Routes.MapHttpRoute(
      name: "Purchase",
       routeTemplate: "{controller}/{pan}",
       defaults: new
           {
               controller  = "ControllerA"
               pan = RouteParameter.Optional
            });
  config.Routes.MapHttpRoute(
      name: "Vend",
      routeTemplate: "{controller}/{mpxn}",
      defaults: new
      {
           controller = "ControllerB",
           mpxn = RouteParameter.Optional
      });

当我调用从小提琴手到/ControllerA/1 的 POST 请求时,它工作正常,即 Action1 中平移参数的值设置为 1但是当我调用来自提琴手到/ControllerB/2 的 POST 请求时,它来到了 Action2,但 mpxn 的值没有设置,它是"。谁能纠正我在路由中犯的错误?

谢谢

Web api 路由两个控制器类似的操作和参数未在一个操作中填充参数值

希望这些链接对您有所帮助: 属性路由-1 属性路由-2

通过属性路由,可以更好地控制 Web API 中的 URI。例如,您可以轻松创建描述资源层次结构的 URI。

早期的路由

样式(称为基于约定的路由)仍完全受支持。实际上,您可以在同一项目中结合使用这两种技术。