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

C# 在.net web api属性路由中,在控制器级别使用路由而不是RoutePrefix,c#,asp.net-web-api,attributerouting,C#,Asp.net Web Api,Attributerouting,如果我用Route属性装饰这个webapi控制器,我可以点击这个方法 [Route("api/v{version}/bank-accounts")] public class BankAccountsController : ApiController { [HttpGet] public HttpResponseMessage GetBankAccounts() { //... } } 但如果我改用RoutePrefix,除非同时使用Route

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

[Route("api/v{version}/bank-accounts")]
public class BankAccountsController : ApiController
{
    [HttpGet]
    public HttpResponseMessage GetBankAccounts()
    {
        //...
    }
}
但如果我改用RoutePrefix,除非同时使用Route(“”),否则我无法让它工作

这是故意的,还是我把事情搞砸了


谢谢

对,这是一种预期行为
RoutePrefix
属性本身不会将任何路由添加到路由表中,其中as
route
属性会

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

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