Hice una pregunta similar sobre esto en el pasado en StackOverflow, porque quería hacer lo mismo. Sin embargo, finalmente terminé con un área "Api" y un conjunto de controladores, y un conjunto estándar de controladores MVC para el sitio web.
En retrospectiva esto en realidad no fue algo malo. He descubierto que, de todos modos, tiendo a hacer cosas diferentes en cada grupo de controladores. Mis puntos de vista no son solo CRUD, sino que tienden a contener datos contextuales adicionales, por lo que devolver modelos de vista específicos a esa página es agradable.
Creo que si hubiera cumplido con mi objetivo de combinar los dos podría haber terminado con controladores demasiado complicados o una experiencia de usuario que no fue tan óptima como podría haber sido. Entonces, aunque esta no es una respuesta directa a su pregunta, en mi experiencia, no poder hacer esto podría no ser tan malo.
En su lugar, terminé con un conjunto rico de constructores y comandos a los que la mayoría de mis controladores delegan. De esa manera puedo reutilizar la mayor parte de la lógica del controlador, mientras que ser capaz de hacer cosas específicas para el API con respecto a la web:
http://www.paulstovell.com/clean-aspnet-mvc-controllers
¡Qué vergüenza, pero gracias! –
@ShaneCourtrille ¿qué pensaban entonces llamándolo ApiController? ;) Pero estoy de acuerdo, mi principal frustración simplemente se debe a la falta de conectividad entre MVC y la API web –