具有常规映射路由的属性路由是否有意义

时间:2015-07-21 20:57:58

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

我们有很多带有2个项目的web api解决方案。一个项目设置web api配置,另一个项目包含控制器。

每个web api配置都设置为:


    DuplicateFilter df = new DuplicateFilter("Key");
    df.setKeepMode(DuplicateFilter.KM_USE_LAST_OCCURRENCE);
    TopDocs hits = searcher.search(query, df, 10);

当我们在每个控制器/动作上使用Route / Prefix-Attributes时,我问自己,config.Routes.MapHttpRoute方法调用是否仍然有效?

实际上,只要我在控制器上注释路由属性,至少我会覆盖web api的约定行为。因此,方法调用已过时。

这是对的吗?或者还有什么需要考虑,因为我想在每个项目中删除此方法调用。

1 个答案:

答案 0 :(得分:2)

仍将应用基于会议的路线。基于属性的路由优先(因为它们是先配置的)但如果操作方法同时具有匹配的属性路由常规路由,两个路由将映射到操作问题。

如果您只想使用基于属性的路由,删除基于约定的路由映射可能是明智之举,以防止意外行为(即在非预期路由下暴露操作)。

当然,您需要确保在任何地方都不会无意中依赖基于约定的路由!