繁体   English   中英

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

[英]Using Route instead of RoutePrefix at controller level in .net web api attribute routing

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

这是故意的,还是我在捣乱?

谢谢

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM