在.net web api属性路由中的控制器级别使用Route而不是RoutePrefix

时间:2013-11-21 08:57:47

标签: c# asp.net-web-api attributerouting

如果我使用Route属性装饰这个web api控制器,我可以点击方法

[Route("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    public HttpResponseMessage GetBankAccounts()
    {
        //...
    }
}

但如果我使用RoutePrefix而不能让它工作,除非我同时使用Route(“”)

[RoutePrefix("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    [Route("")]
    public HttpResponseMessage GetBankAccounts()
    {
        //...
    }
}

这是打算,还是我弄乱了?

由于

2 个答案:

答案 0 :(得分:19)

是的,这是一个预期的行为...... RoutePrefix属性本身不会添加任何路由到路由表,而Route属性就是这样做...

答案 1 :(得分:6)

你错过了......路由前缀就是前缀。您应该将路径模板的一部分移动到路由属性。像这样。

[RoutePrefix("api/v{version}")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    [Route("bank-accounts")]
    public HttpResponseMessage GetBankAccounts(string version)
    {
        //...
    }
}
相关问题