我正在尝试使用多个get操作创建一个查找控制器。 我的路由配置是:
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "LookupsApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
我的查找控制器
[HttpGet]
public LookupsList GetAllStates()
{
}
[HttpGet]
public LookupsList GetAllSources()
{
//method
}
当我使用以下内容时,它只会给出错误声明"找到符合请求的多个操作"
http://localhost:51042/api/lookups/GetAllStates
or
http://localhost:51042/api/lookups/GetAllSources
但是当我使用
时http://localhost:51042/api/lookups/GetAllStates/1
or
http://localhost:51042/api/lookups/GetAllSources/1
它会正常工作。
如何正确设置我的路线。
感谢。
答案 0 :(得分:3)
我认为你的路线会发生冲突。例如:
http://localhost:51042/api/lookups/GetAllStates
将匹配第一条路线。
您应该改变路线的顺序:
从EdSF更新:
config.Routes.MapHttpRoute(
name: "LookupsApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
其他有用的参考资料: