2012-10-04 54 views
0

我有以下的路線在我的WebAPI成立..Asp.net的WebAPI從匹配排除路徑不止一次

 //Route for getting the api access token 
     config.Routes.MapHttpRoute(
      name: "AccessTokenRoute", 
      routeTemplate: "api/access-token", 
      defaults: new { controller = "AccessToken" } 
     ); 

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

我有一個名爲AccessTokenController控制器。當一個請求帶有url/api/access-token時,一切正常。它擊中適當的控制器。

我的問題是,如果請求進入/ api/AccessToken,它也將匹配默認路由。如果他們以這種方式訪問​​它,我想阻止匹配。路由系統中是否存在這樣的事情?

回答

1

如果控制器是AccessToken,則爲您的DefaultApi路由添加一個限制訪問的約束。

+0

有沒有辦法做到這一點與約束。我試圖將控制器設置爲以下正則表達式,但沒有成功。 ....約束:新{控制器= @「[^ AccessToken]」} – Ronnie

+0

我不善於使用正則表達式,所以我創建了一個實現IRouteConstraint的類,它工作。 –

+1

嘗試約束:new {controller = @「^(?!。* accesstoken)。* $」} –