C# WebApi RouteAttribute出现错误

C# WebApi RouteAttribute出现错误,c#,asp.net-web-api,asp.net-web-api-routing,C#,Asp.net Web Api,Asp.net Web Api Routing,这是我的前缀属性 [RoutePrefix("news/farms")] public class farmsController : ApiController 我想根据farmid删除一行,但我想要这样的url结构 /news/farms/{farmId}?version={version} 我试着按下面的代码发送url [HttpDelete, Route("{farmId}?version={Version}", Name = "Deletefarm")] 但它表明 The r

这是我的前缀属性

 [RoutePrefix("news/farms")]
 public class farmsController : ApiController
我想根据farmid删除一行,但我想要这样的url结构

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

我试着按下面的代码发送url

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

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

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

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

然而: 这样行吗

[HttpDelete]
public async Task<IActionResult> Delete(int id, [FromQuery] string version)
{
 //...your code
}
[HttpDelete]
公共异步任务删除(int-id,[FromQuery]字符串版本)
{
//…您的代码
}

使用
[FromQuery]
可以指定希望从。。。。查询;)

URI路径中不能有查询字符串,因此不允许使用,请参阅-

对于你的答案,你想要的是-

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

设置
RoutePrefix
,如示例所示:

[RoutePrefix("news/farms")]
public class FarmsController : ApiController
以及您的删除方法:

[HttpDelete]
[Route("{farmId}")]
public void Delete(int farmId, string version)
那么这应该是可行的:

…/news/farms/1?version=myVersion