我有一个现有的webapi 2应用程序需要基本的前端添加。现有的webapi控制器已在名为xController yController的Controllers目录根目录中创建。
Controllers
-XController.cs
-YController.cs
使用以下路线
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
这些控制器中的每一个都需要一个附带的MVC控制器。我想要做的是将API控制器重命名为XApiController YApiController并使用路由来确保服务的现有用法完成。然后我可以为前端添加标准的MVC控制器。
Controllers
-XApiController (previously XContoller)
-XController
-YApiController (previously YController)
-YController
答案 0 :(得分:2)
你能不能只使用RoutePrefix
属性来做到这一点?然后你可以随心所欲地调用你的控制器,只需要让属性决定它应该托管在哪里,在控制器级控制你的路由有利有弊,但它似乎是一个常见的用例,所以例如:
[RoutePrefix("api/home")]
public class SomeHomeController: ApiController
{
// ...
}
答案 1 :(得分:2)
控制器在每个框架中都是独立的类型,每个框架都可以发现它们,无论它们的位置如何(只要它们具有正确的名称)。没有理由搞乱路由以获得您想要的结果。您唯一需要的(假设它是可接受的)是将您的控制器放入不同的命名空间/文件夹,这样您就可以拥有2个具有相同名称的控制器(MVC和Web API)。
ApiControllers
-XController
-YController
Controllers
-XController
-YController
如果你问我,将MVC和API控制器保存在一个单独的位置仍然更好,即使你不能将它们作为单独的应用程序部署。