tag renderbody net asp asp.net-mvc-4

asp.net mvc 4 - renderbody - Mezcla de páginas web API y ASP.Net MVC en un proyecto



tag helper asp net core 2 (3)

¿Cómo mezclo la API web y las páginas ASP.Net MVC en un proyecto?

Por ejemplo, tengo modelo de usuario. Me gustaría, dentro del mismo proyecto, tener un ApiController que responda a todos los verbos HTTP para la gestión de las entidades de usuario, y al mismo tiempo tener un controlador que devuelva las vistas apropiadas de tipo fuerte en función de la acción solicitada.

No puedo nombrar ambos controladores UserController. ¿Cuál es la mejor manera de evitar esto? ¿Debería nombrar un UserApiController y el otro UserController? ¿Cualquier otra sugerencia?


La implementación de WebApi debe agregarse como un Area separada en la aplicación MVC. Es un ajuste natural. Hacer esto le da el espacio de nombres separado que Mike Wasson recomendó, además le brinda una forma natural de configurar el enrutamiento / api. Obtienes una carpeta de modelo separada

Además, está muy específicamente separado del resto del proyecto. Si los requisitos en el futuro son tales que necesita separar la implementación de API en un proyecto separado, tener la implementación de API aislada en un área separada hace que dividirla sea mucho más fácil.


No he cambiado los espacios de nombres, lo único que tuve que hacer fue registrar WebApi primero, y luego la ruta MVC

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

y todo funciona genial!


Puede ponerlos en espacios de nombres separados, por ejemplo, MyApp.Controllers.UsersController y MyApp.Controllers.WebAPI.UsersController.

Esto le permitiría exponer rutas de URI similares en MVC y WebAPI, por ejemplo:

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