【问题标题】:Does Attribute Routing with Conventional mapped routes make sense具有常规映射路由的属性路由是否有意义
【发布时间】:2015-07-22 05:16:58
【问题描述】:

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

每个 web api 配置都是这样设置的:

    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

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

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

正确吗?或者还有什么需要考虑的,因为我想在每个项目中去掉这个方法调用。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2013-11-02
      • 2014-04-15
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      相关资源
      最近更新 更多