2012-12-04 112 views

回答

5

控制器不以這種方式工作。在Asp.NET中,你的文件夾結構就是你的網站結構。在WEB API中,控制器是獨立於結構尋找的。事實上,你可以將它們放在不同的程序集中,它們仍然可以在框架中找到。路由不會按照您的預期工作。 你可以添加一個你有「文件夾名稱」的路線,就像你說的,localhost/WebApp/{foldername}/{controller}。只有{foldername}可以是純文本文件夾名稱(localhost/WebApp/foldername/{controller})。因此,客戶端必須在其中調用帶有「文件夾名稱」的url,但代碼的位置並不重要,因爲MVC框架不會區分控制器下的文件夾樹。

2

我爲自己解決這個問題的方法是添加另一個Maproute並在控制器之前添加命名空間。只是要注意兩點:

  1. 您的新狂勝應該是默認的前一個
  2. 您不能添加的命名空間爲默認的

    routes.MapRoute(
         name: "Secretariat", 
         url: "{namespace}/{controller}/{action}/{id}", 
         defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        ); 
    
0

的答案在這裏是錯誤的。你可以輕鬆地做到這一點。你只需要然後指定你的控制器類的路線:

位於/Controllers/Authentication文件夾

//An example of you specifying a diff. route than the folder path 
[Route("api/login")] 
public class LoginController {...} 
+1

我想在你的例子中,它應該是'[RoutePrefix(「api/login」)]'而不是'[Route(...)]'。 '[Route(...)]'屬性將進入'LoginController'類中的單個動作。 – Jiveman

相關問題