【发布时间】:2017-02-23 19:31:30
【问题描述】:
我在HttpConfiguration中有这个配置
config.Routes.MapHttpRoute("Default", "api/{controller}");
config.Routes.MapHttpRoute("Another", "api/{controller}/{action}");
config.Routes.MapHttpRoute("WithKey", "api/{controller}/{action}/{key}");
因此,我无法像这样访问我的控制器
http://<host>/api/products (works)
http://<host>/api/products/1 (doesn't work)
所以我在get方法中添加了注解Route但是不起作用
[RoutePrefix("products")]
public class ProductsController : ApiController
{
[HttpGet]
public IQueryable<IProduct> GetProducts()
{
return db.GetProducts();
}
//[Route("products/{productID}")] Tried. Doesn't work
//[Route("{productID:int}")] Tried. Doesn't work
[HttpGet]
public IProduct GetProduct(int productID)
{
return db.GetProduct(productID);
}
}
使它工作的唯一方法是输入像这样的地址http://<host>/api/products?productID=1,但我真的很想用这个网址访问http://<host>/api/products/1。
我可以在 http 配置中添加新路由,但不能修改现有路由。而且我不想影响现有的控制器。
请问我该如何解决?
【问题讨论】:
标签: c# web-services rest asp.net-web-api2 asp.net-web-api-routing