Контроллеры не работают таким образом. В Asp.NET ваша структура папок - это структура вашего сайта. В WEB API контроллеры просматриваются независимо от структуры. На самом деле вы можете иметь их в разных сборках, и они все равно будут найдены в рамках. Маршрутизация не будет работать так, как вы ожидаете.
Вы можете добавить маршрут, на котором у вас есть ваше "имя папки", как вы сказали, localhost/WebApp/{foldername}/{controller}. Только {foldername} может быть простым, статическим именем папки (localhost/WebApp/foldername/{controller}). Таким образом, клиенту придется вызывать url с именем "foldername", но расположение кода не имеет значения, поскольку среда MVC не различает деревья папок под контроллерами.
Ответ 3
Что я делаю для решения этой проблемы для себя, я добавляю еще один Maproute и добавляю пространство имен перед контроллером. Просто помните о двух моментах:
Ваш новый маршрут должен быть перед стандартным
Вы не можете добавить пространство имен для стандартного
routes.MapRoute(
name: "Secretariat",
url: "{namespace}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Ответ 4
Ответы здесь неправильные. Вы можете легко это сделать. Вам просто нужно указать маршрут в классе контроллера:
Расположен в папке /Controllers/Authentication
//An example of you specifying a diff. route than the folder path
[Route("api/login")]
public class LoginController {...}