属性路由与约定

时间:2013-09-23 16:17:42

标签: asp.net-web-api asp.net-web-api-routing

使用Web.API 2.0的东西 - 特别是属性路由。 docs状态,您可以按惯例使用属性路由和1.0路由......但这两个似乎不能很好地协同工作。例如,给出这两种方法:

public override HttpResponseMessage PutModel(SampleForm form)

[HttpPut("approvesampleform/{form}")]
public string ApproveSampleForm([FromBody]SampleForm form)

虽然我可以正常致电http://localhost/api/sampleform/approvesampleform,但PUThttp://localhost/api/sampleform/会产生Multiple actions were found that match the request错误。

有没有办法如果方法用属性路由标记,它会被约定忽略?这将是理想的......但我认为在文档中没有任何方法可以实现这一点。

注意:我没有看到asp.net-web-api-2标签。或许拥有超过1500名代表的人可以创建吗?

1 个答案:

答案 0 :(得分:1)

对,RC(候选版本)没有传统路由无法访问属性控制器/操作的逻辑。这一变化发生在RC之后。您尝试的方案在后RC位中可以正常工作。

您提到的文档可能不是很清楚,但我认为它们意味着您可以将基于约定和基于约定的控制器并排工作,而不是特别关注在同一控制器中混合属性和传统语义。 / p>

暂时你可能只使用上面提到的控制器的属性路由。