【发布时间】:2014-05-28 20:11:02
【问题描述】:
我无法理解路线选择的工作原理。我有两个相互冲突的路由属性集。 他们是
[Route("{apikey}/Parent/{parentID}/Children/ChildrenDataFormat")]
[Route("{apikey}/Parent/{parentID}/{dataSelectionTypeA}/{dataSelectionTypeB}")]
第一条路线的最后两部分是硬编码的,永远不会改变。第二个路由将绑定到方法参数中。
如果我删除第二条路线,那么第一条路线可以正常工作,但否则我会得到 404。我认为路线匹配是看到一个 Guid 后跟“父母”,然后忽略了“儿童”和“儿童数据格式”应该出现在场,而是看到 3 件事跟随,所以路线 2 是匹配的。
如果这是一个正确的假设,是否有明显的解决方法可以使这项工作发挥作用?
【问题讨论】:
-
你试过指定顺序吗?我不明白您如何获得 404,因为在最坏的情况下,如果第二条路线中的两个标记都定义为字符串,您将使用
dataSelectionTypeA = "Children"和dataSelectionTypeB = "ChildrenDataFormat"到达第二条路线。 -
是的,我也很困惑。每个变量都是一个 Guid。我已经在不同的控制器和相同的控制器中尝试过它们,但似乎没有什么不同。如果我在任一路线中将 Parent 更改为 ParentDifferent,那么这也会使它们都起作用。
标签: c# asp.net-mvc-5 asp.net-web-api-routing asp.net-web-api2