我的Web API类中有几个get方法。路由配置如下;
select @data.value('sum(//*[not(*)])', 'float')- @data.value('sum(//*:a)', 'float')
控制器类如下;
config.Routes.MapHttpRoute(
name: "CustomApi",
routeTemplate: "api/test/{action}/{id}",
defaults: new { controller = "item", action="testBring", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当我尝试调用 / api / test 时,会调用 testBring 方法。但是,当我调用 / api / Item 时,我收到一条错误消息,发现与请求相匹配的多个操作... 为什么这样?
答案 0 :(得分:0)
/api/test
可以很好地映射到第一个路由模板api/test/{action}/{id}
,因为其中包含默认参数,从而可以调用特定动作。
但是,/api/Item
映射到第二个路由模板api/{controller}/{id}
,并且由于存在多个HttpGet
动作(例如Get()
和testBring()
)与请求的路径匹配。