Web API 5.0.0-rc1打破默认路由

时间:2013-09-01 16:28:51

标签: asp.net-web-api attributerouting

在我从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

时收到404

然而,这有效:

[RoutePrefix("api/v1")]
public class TestController : ApiController
{
    [HttpGet("test")]
    public TestString Get()
    {
        return new TestString { str = "HELLO WORLD" };
    }
}

你能解释为什么它不再起作用吗?

** 编辑 ** [HttpGet("")]有效。然后它打破了Get()函数。

1 个答案:

答案 0 :(得分:2)

我不确定,但我相信Http [Get,Post等]类型属性已删除其路由属性。这个链接暗示了它:

http://blogs.microsoft.co.il/blogs/bnaya/archive/2013/08/28/asp-net-web-api-attribute-based-routing.aspx

  

请注意,大多数基于属性的路由示例都可用   今天在网上,正在使用像[PUT]或[HttpPut]这样的旧属性   不再支持最新位(目前可从该位获得)   ASP.NET每晚构建,http://www.myget.org/F/aspnetwebstacknightly/   ),用[Route]属性替换那些属性。

请参阅https://aspnetwebstack.codeplex.com/SourceControl/list/changesetshttps://aspnetwebstack.codeplex.com/workitem/1206。基本上,目标是将动词过滤器与属性路由分开。