2016-10-19 133 views
0

我們正在開發一個ASP.NET MVC應用程序,並且我們決定將一個名爲例如API_Services的文件夾內的API服務/控制器分開,而不是直接將它們放在控制器中。Web Api路由配置ASP-NET MVC

問題是:我們如何設置/定義路線? Tipically是類似下面的代碼(在App_Start文件夾和文件WebApiConfig.cs):

routes.MapHttpRoute(
name: "API Default", 
routeTemplate: "api/{controller}/{id}", 
defaults: new { id = RouteParameter.Optional } 

我們嘗試設置routeTemplate這樣的:

routeTemplate: "API_Services/api/{controller}/{id}", 

或者這樣:

routeTemplate: "api/API_Services/{controller}/{id}", 

隱而不宣」不工作...有人可以幫助我們嗎?謝謝!

+0

routeTemplate:「API_Services/api/{controller}/{id}」 –

+0

@viveknuna,正如我在評論中所說的,不起作用 – carlosfcmendes

+0

對不起,我誤解了。 –

回答

1

如果我明白正確的問題: 如果您使用某些web api控制器我建議閱讀本書「ASP.NET Web API 2:從開始到完成第二版構建REST服務」作者:Jamie Kurtz,Brian Wortman 」。有關於api版本的章節,作者描述了通過文件夾(V1文件夾,V2等)的路由。 也可以使用"inline-attribute" routing。 你可以閱讀Areas(或只是嘗試將一些「命名空間」放入路由設置or play with it)。我希望它有幫助,對不起我的英語。

0

我們strucure這樣的:

Controllers (Folder) 
    A_Controller 
    B_Controller 
API (Folder) 
    A_Controller 
    B_Controller 

大量的谷歌搜索後,我發現這一點:

Controllers (Folder)  
    A_Controller 
    B_Controller 
    API (Folder) 
     A_Controller 
     B_Controller 

(這顯然作品,但只是明天我去可以測試,然後我謝謝!)

+0

你真的不需要指定控制器的路徑,只是路由;) –

0

你說的改變是你的文件夾,而不是路由,約定會忽略。

它的工作方式意味着無論您將它移動到哪個項目文件夾中,如果它被命名爲XXXController,它都會在沒有路徑更改的情況下找到。因此,與以下這一點:

routes.MapHttpRoute(
name: "API Default", 
routeTemplate: "api/{controller}/{id}", 
defaults: new { id = RouteParameter.Optional } 

http://yoursite.com/api/XXXController仍然會發現你的控制器,即使是在另一個文件夾:

你可以玩的默認值,如果你想要更多的控制,但我不認爲這是你在問什麼。例如:

routes.MapHttpRoute(
name: "API Default", 
routeTemplate: "api/API_services/{id}", 
defaults: new { controller="mycontroller" id = RouteParameter.Optional } 

所以每當人們訪問http://yoursite.com/api/API_services,所使用的控制器將是 「myController的」。