在一个项目中混合Web Api和ASP.Net MVC页面

如何在一个项目中混合Web API和ASP.Net MVC页面?

例如,我有模型用户。 我想,在同一个项目中,有一个ApiController将响应所有的HTTP动词来pipe理用户实体,同时有一个Controller,根据请求的Action返回合适的强types视图。

我无法命名两个控制器UserController。 什么是最好的方法呢? 我应该命名一个UserApiController和另一个UserController? 还有其他build议吗?

你可以把它们放在不同的名字空间中,比如MyApp.Controllers.UsersController和MyApp.Controllers.WebAPI.UsersController。

这会让你在MVC和WebAPI中公开类似的URI路由,例如:

/users/1 << MVC view /api/users/1 << Web API 

WebApi实现应作为MVC应用程序中的独立区域添加。 这是天作之合。 这样做可以为您提供Mike Wasson推荐的独立名称空间,此外还可以自然地设置/ api路由。 你得到一个单独的模型文件夹

此外,它与项目的其余部分是非常明确的分离。 如果将来的需求是这样的,那么你需要将api实现分离到一个单独的项目中,将api实现分离到一个单独的区域使得分解变得更容易。

我没有改变命名空间,唯一要做的就是先注册WebApi,然后注册MVC路由

 //First register WebApi router GlobalConfiguration.Configure(WebApiConfig.Register); //and register Default MVC Route after RouteConfig.RegisterRoutes(RouteTable.Routes); 

一切都很好