WebApi RouteAttribute出错

时间:2017-10-23 11:15:47

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

这是我的前缀属性

 [RoutePrefix("news/farms")]
 public class farmsController : ApiController

我想基于farmid删除一行,但我想要一个像这样的网址结构

/news/farms/{farmId}?version={Version}

我尝试了路由网址,如下面的代码

 [HttpDelete, Route("{farmId}?version={Version}", Name = "Deletefarm")]

但它显示

The route template cannot start with a '/' or '~' character and it cannot contain a '?' character.

请有人告诉我有没有其他方法可以解决此错误?

3 个答案:

答案 0 :(得分:2)

在示例中设置RoutePrefix

[RoutePrefix("news/farms")]
public class FarmsController : ApiController

你的删除Methode:

[HttpDelete]
[Route("{farmId}")]
public void Delete(int farmId, string version)

然后这应该有效:

  

... /消息/农场/ 1?版本= myVersion

答案 1 :(得分:0)

为什么要尝试将路由中的版本添加为查询参数?这不是你想要的控制器路由吗?

不过: 这会有用吗?

[HttpDelete]
public async Task<IActionResult> Delete(int id, [FromQuery] string version)
{
 //...your code
}

使用[FromQuery]指定您想要来自....查询;)

答案 2 :(得分:0)

URI路径中不能包含查询字符串,因此不允许使用,请参阅 - http://tools.ietf.org/html/rfc3986#section-3.3

您的回答是什么 -

[HttpDelete]
public IActionResult DeleteFarm(int farmId, [FromQuery] string version)
{
    //
}