有没有办法在Webapi项目的Controller文件夹中添加子文件夹?
我在考虑像Controller / Customer这样的东西,包括Customer模块的控制器。
答案 0 :(得分:5)
控制器无法以这种方式工作。在Asp.NET中,您的文件夹结构是您的网站结构。在WEB API中,独立于结构查找控制器。事实上,你可以将它们放在不同的程序集中,它们仍然可以被框架找到。路由将无法按预期方式工作。
您可以添加一个路径,其中包含“文件夹名称”,如您所说,localhost/WebApp/{foldername}/{controller}
。只有{foldername}
可以是普通的静态文件夹名称(localhost/WebApp/foldername/{controller}
)。因此客户端必须使用“foldername”调用url,但代码的位置无关紧要,因为MVC框架不区分控制器下的文件夹树。
答案 1 :(得分:2)
我用区域来解决这个问题。如此处所述 http://blogs.infosupport.com/asp-net-mvc-4-rc-getting-webapi-and-areas-to-play-nicely/
答案 2 :(得分:2)
我为自己解决这个问题的方法是在控制器之前添加另一个Maproute并添加命名空间。请注意两点:
您无法为默认名称添加名称空间
routes.MapRoute(
name: "Secretariat",
url: "{namespace}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 3 :(得分:1)
这里的答案是错误的。你可以轻松地做到这一点。您只需在控制器类上指定路由:
位于/Controllers/Authentication
文件夹
//An example of you specifying a diff. route than the folder path
[Route("api/login")]
public class LoginController {...}