【发布时间】:2015-06-27 12:19:09
【问题描述】:
您好,我有这个 REST 服务
- GET admin/delegateduser
- GET admin/delegateduser/id
- 获取委托用户
我成功地用这个映射配置了路由:
config.Routes.MapHttpRoute(
name: "ActionApiWithId",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
还有这个控制器
public class AdminController : ApiController
{
// GET api/admin/delegatedusers
[ActionName("delegatedusers")]
public IEnumerable<x> Get()
{
}
// GET api/delegatedusers/<userid>
[ActionName("delegatedusers")]
public x Get(String id)
{
}
}
public class DelegatedUsersController : ApiController
{
public x Get()
{
}
}
问题是我添加了一个没有正确解决的新方法。方法是
- 删除注册请求/id
使用这个映射和控制器
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
public class EnrollRequestController : ApiController
{
/// DELETE api/enrollrequest/<id>
public void Delete(String id)
{
}
}
如果我将 DefaultApi routMapping 放在 WebApiConfig 文件的顶部,则此新方法已解决,但 GET admin/delegateduser 未解决。所以看起来这两种方法在 URL 解析上存在冲突。
映射方法的正确方法是什么?可能一切都应该更简单,我太复杂了....
欢迎任何帮助。
提前致谢。
【问题讨论】:
-
为什么没有为端点([HttpDelete]、[HttpPost]、[HttpGet]、[HttpPut])指定HttpMethod?您是否考虑过使用AttributeRouting?
-
嗨助推器。理论上不需要指定方法,因为方法名以Get、Delete开头。无论如何,我已经尝试指定它而没有更改。我正在使用 Web API 1,所以恐怕 AttributeRouting 不可用。
标签: asp.net asp.net-web-api asp.net-web-api-routing wcf-web-api