我在 WebApiConfig.cs 中定义了以下 2 条路由:
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "api/{controller}/{action}/{id}"
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在服务器上这两种方法:
public IEnumerable<SampleForm> Get()
{
// do stuff
}
public IEnumerable<SampleForm> GetSampleFormsByState([FromUri]string[] state)
{
// do stuff
}
我收到错误“找到与请求匹配的多个操作”并指出这两种方法。请求是这样的:
http://localhost/tracker/api/sampleform?state[]=pending&state[]=rejected&state[]=removed
所以这是有趣的事情......如果我将第二种方法更改为:
public IEnumerable<SampleForm> GetSampleFormsByState(string state)
{
// do stuff
}
并提出如下请求:
http://localhost/tracker/api/sampleform?state=pending
没有问题。
到底是怎么回事?导致我的路由失败的阵列是什么?我需要做什么?