属性路由返回404
,但我是新来的属性的路由,而我不知道这是为什么不工作时一切不 所以我有这个属性路由返回404
[RoutePrefix("api/statistics")]
public class StatisticsController : ApiController
然后,我有
[HttpGet]
[Route("categoryTagsByTotalIssues/{categoryId:int}")]
public IHttpActionResult CategoryTagsByTotalIssues(int cateogryId)
从邮递员调用时 https://localhost:44363/api/statistics/categoryTagsByTotalIssues/3 返回404 但如果我不 https://localhost:44363/api/statistics/getTopFiveCategories 这是SOM这样的代码
[HttpGet]
[Route("getTopFiveCategories")]
public IHttpActionResult GetTopFiveCategories()
它的工作原理,我不知道为什么另一个人不能有人可以解释这个给我吗?
在萨米尔的答复的意见正确识别问题与类别与Catoegory一个错字。如您所见,方法签名中参数的名称和路径中参数的名称需要完全匹配。
我想在参数绑定方面进行一点扩展。鉴于你的类别id是一个简单类型的int,所以不需要[FromUri]。比方说,你有一些复杂的对象被传入,你希望它来自URL而不是body(如果你正在做一个POST,因为GET没有body)。在这种情况下,您将需要使用[FromUri]显式修饰参数,因为WebAPI2会自动假定复杂类型源自身体,除非您另行指定。
与此相反的情况也是如此。假设你正在POST一个简单的东西,像一个int,它在body中,而不是URL。您需要使用[FromBody]修饰参数,以告知WebAPI2将该值从POST正文中取出,而不是从URL中取出,否则它将作为默认值。
谢谢你的一些有用的信息! – Harry
这看起来像是路由模板中的'categoryId'和动作参数中的'cateogryId'之间的拼写错误 – Nkosi