【问题标题】:Web API 5.0.0-rc1 breaking default routesWeb API 5.0.0-rc1 打破默认路由
【发布时间】:2013-09-01 16:28:50
【问题描述】:

在我从 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" };
    }
}

所以当我访问 URL /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() 函数上中断。

【问题讨论】:

    标签: asp.net-web-api attributerouting


    【解决方案1】:

    我不确定,但我相信 Http[Get, Post, etc] 类型属性的路由属性已被删除。此链接提示:

    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。基本上,目标是将动词过滤器与属性路由分开。

    【讨论】:

    • 谢谢,但[Route] 不起作用。但是[HttpGet("")] 工作。我认为微软不知道他们会做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2020-10-29
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多