在我从Web API 5.0.0-beta2
更新到5.0.0-rc1
之前,我可以这样做:
[RoutePrefix("api/v1/test")]
public class TestController : ApiController
{
[HttpGet]
public TestString Get()
{
return new TestString { str = "HELLO WORLD" };
}
}
所以当我转到网址/api/v1/test
时,它会落在Get()
函数上。
更新到Web API 5.0.0-rc1
后,我在转到/api/v1/test
然而,这有效:
[RoutePrefix("api/v1")]
public class TestController : ApiController
{
[HttpGet("test")]
public TestString Get()
{
return new TestString { str = "HELLO WORLD" };
}
}
你能解释为什么它不再起作用吗?
** 编辑 **
[HttpGet("")]
有效。然后它打破了Get()
函数。
答案 0 :(得分:2)
我不确定,但我相信Http [Get,Post等]类型属性已删除其路由属性。这个链接暗示了它:
请注意,大多数基于属性的路由示例都可用 今天在网上,正在使用像[PUT]或[HttpPut]这样的旧属性 不再支持最新位(目前可从该位获得) ASP.NET每晚构建,http://www.myget.org/F/aspnetwebstacknightly/ ),用[Route]属性替换那些属性。
请参阅https://aspnetwebstack.codeplex.com/SourceControl/list/changesets和https://aspnetwebstack.codeplex.com/workitem/1206。基本上,目标是将动词过滤器与属性路由分开。