添加默认参数时未调用端点

时间:2016-07-12 07:50:42

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

我有两个端点:

style:{textAlign:"right"}

[HttpPut]
[Route("Acc/{id:int}/Limit/{canIncreaseLimitsWithinSevenDays:bool}")]
public IHttpActionResult Put([FromUri]int id, [FromBody]Limit limit, bool canIncreaseLimitsWithinSevenDays = false)

调用Put端点时出现此错误:

[HttpGet]
[Route("Acc/{id:int}/Limit")]
public IHttpActionResult Get(int id)

这在我添加默认参数之前工作,两个路由完全相同。

如何在不必指定默认参数的参数的情况下调用Put端点,而无需更改Get端点的Route?

1 个答案:

答案 0 :(得分:1)

路由参数canIncreaseLimitsWithinSevenDays是必需的,因为它未标记为可选。要将其标记为可选,需要将?问号)添加到参数占位符。

the Microsoft article on Web API attribute routing起,解释如下:

  

您可以通过向路由参数添加问号来使URI参数可选。如果route参数是可选的,则必须为method参数定义默认值。

意味着您需要将路线属性更改为

[Route("Acc/{id:int}/Limit/{canIncreaseLimitsWithinSevenDays:bool?}")]