ASP.NET Web API - 区分路由/查询参数

时间:2017-09-09 22:33:22

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

拥有此Web API控制器:

[RoutePrefix("api/echo")]
public class EchoController : ApiController
{
    [HttpGet]
    [Route("{userId}/{message}")]
    public async Task<IHttpActionResult> Echo(string userId, string message, string queryString)
    {
        await Task.Delay(150);
        return Ok(new {Action = "Echo", UserId = userId, Message = message, QueryString = queryString});
    }
}

执行此API的合法路由如下所示:/api/echo/johni/hello?querystring=1

如您所见,这个虚拟API接收3个输入:

  1. userId来自路线
  2. message来自路线
  3. querystring来自查询参数
  4. 其中所有3个都可在此处以字典形式提供:httpActionContext.ActionArguments

    问题是,鉴于HttpActionContext,如何区分路由/查询参数?

1 个答案:

答案 0 :(得分:0)

找到它。

  • X = httpActionContext.ActionArguments - 所有参数(路线/查询)。
  • Y = httpActionContext.RequestContext.RouteData.Values - 仅限路线参数。

这意味着, X - Y - 仅查询参数。