在WebApiConfig
我添加到路线:
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
在ApiController中,我有2个GET
动作:
[HttpGet]
public async Task<IEnumerable<RequestModel>> Pending(){}
[HttpGet]
public async Task<IEnumerable<RequestModel>> Resolved()
当我尝试从AngularJS服务调用此操作之一时,我得到500错误。
找到了与请求匹配的多项操作
当我只离开第二条路线时,那与我的动作相符 - 效果很好。
"/api/v1/RequestRecipient/Pending"
在2条路线的情况下会出现什么问题?
答案 0 :(得分:0)
经过一些研究后我找到了解决方案 - 只需要改变路线的顺序。
来自:
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
收件人:
config.Routes.MapHttpRoute(
name: "v1_ApiAction",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "v1_Api",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
但我也发现了一些意见,认为行动和非行动路线不是一个好主意。