我发现了ASP.NET Web API中似乎不一致的行为。说我有以下控制器:
public class FooController: ApiController
{
[HttpGet, Route("foo")]
public IHttpActionResult GetFoo([FromUri]Bar request)
{
}
[HttpGet, Route("foo/{id}")]
public IHttpActionResult GetFoo(int id, [FromUri]Bar request)
{
}
}
如果我向/foo
发送GET请求,没有查询字符串参数,则第一个方法将被执行,其request
参数将为null - 这是有道理的。但是,当我向foo/1
发送请求时,情况并非如此。在这种情况下,我希望只有id
参数填充1
,但事实证明两个参数都已初始化。
为什么会这样?如果按照设计的那样,我可以做些什么才能使标准化"那个行为,即两个方法中的request
参数是空还是初始化?