从HttpRouteCollection中删除路由

时间:2014-01-03 03:24:31

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

我正在使用WebAPI 2.0中包含的属性路由,但无法弄清楚如何根据特定条件删除路由。我使用MapHttpAttributeRoutes映射所有路由,然后我想使用下一行代码删除特定路由。

        // enable attribute routing support
        httpConfiguration.MapHttpAttributeRoutes();

        // expose the flag routes only if required
        if (DisableFlagEndpoint)
        {
            httpConfiguration.Routes.Remove(FlagsController.RouteName);
        }

但这会引发NotSupportedException。如何删除路线?如果没有,还有另一种方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:2)

看起来WebAPI 2.1引入了使用IgnoreRoute()执行此操作的功能。 http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21#ignoreroute

// disable the flag routes if required
if (DisableFlagEndpoint)
{
    httpConfiguration.Routes.IgnoreRoute("Flags", "api/flags/{*paths}");
}

// enable attribute routing support
httpConfiguration.MapHttpAttributeRoutes();