【问题标题】:Using Route instead of RoutePrefix at controller level in .net web api attribute routing在.net web api属性路由中在控制器级别使用Route而不是RoutePrefix
【发布时间】:2013-12-05 15:37:34
【问题描述】:

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-03-29
        • 1970-01-01
        • 2020-11-11
        • 2014-06-09
        • 2015-10-09
        • 2014-09-22
        • 1970-01-01
        • 2015-02-27
        • 1970-01-01
        相关资源
        最近更新 更多