Смешивание веб-страниц Api и ASP.Net MVC в одном проекте
Как мне смешивать страницы Web API и ASP.Net MVC в одном проекте?
Например, у меня есть модель User. Я хотел бы, в рамках того же проекта, иметь ApiController, который будет отвечать на все HTTP-глаголы для управления объектами пользователя и в то же время иметь контроллер, который будет возвращать соответствующие строго типизированные представления в зависимости от запрашиваемого действия.
Я не могу назвать оба контроллера UserController. Каков наилучший способ обойти это? Должен ли я назвать один UserApiController и другой UserController? Любые другие предложения?
Ответы
Ответ 1
Вы можете поместить их в отдельные пространства имен, например MyApp.Controllers.UsersController и MyApp.Controllers.WebAPI.UsersController.
Это позволит вам выявлять аналогичные маршруты URI в MVC и WebAPI, например:
/users/1 << MVC view
/api/users/1 << Web API
Ответ 2
Реализация WebApi должна быть добавлена как отдельная область
Ответ 3
Я не изменил пространства имен, единственное, что мне нужно было сделать, это сначала зарегистрировать WebApi, а затем маршрут MVC
//First register WebApi router
GlobalConfiguration.Configure(WebApiConfig.Register);
//and register Default MVC Route after
RouteConfig.RegisterRoutes(RouteTable.Routes);
и все отлично работает!