13

如果我用 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()
    {
        //...
    }
}

这是故意的,还是我搞砸了?

谢谢

4

2 回答 2

22

是的,这是一种预期的行为......RoutePrefix属性本身不会向路由表添加任何路由,而Route属性会......

于 2013-11-21T11:23:02.820 回答
7

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

[RoutePrefix("api/v{version}")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    [Route("bank-accounts")]
    public HttpResponseMessage GetBankAccounts(string version)
    {
        //...
    }
}
于 2014-06-20T17:26:01.613 回答