c#带有查询字符串的webapi

Tim*_*Tim 2 c# asp.net routing query-string asp.net-web-api

我有基于 WebApi 的 Web 服务,例如:

public class ControllerName : ApiController
{
    [Route("api/ControllerName/{p1}/{p2}/{p3}/{p4}/{p5}")]
    public string GetItemByNameAndId(string p1, string p2, string p3, string p4, string p5)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

这种类型的请求正在工作:

主机/api/ControllerName/1/2/3/4/5

但我想要这种类型的请求:

主机/api/控制器名称/&p1=1&p2=2&p3=3&p4=4&p5=5

我收到如下错误:

从客户端 (&) 检测到潜在危险的 Request.Path 值。必须遵循哪些步骤?配置文件中的任何更改、任何属性等。

谢谢你的时间。

Nko*_*osi 6

如果您不想要第一种类型的请求

host/api/ControllerName/1/2/3/4/5
Run Code Online (Sandbox Code Playgroud)

然后从路由模板中删除它们

[RoutePrefix("api/ControllerName")]
public class ControllerName : ApiController {
    //GET api/ControllerName?p1=1&p2=2&p3=3&p4=4&p5=5
    [HttpGet]
    [Route("")]
    public IHttpActionResult GetItemByNameAndId(string p1, string p2, string p3, string p4, string p5) {
        //...
        return Ok(someResult);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样查询字符串版本将映射到控制器操作。