Как зарегистрировать контроллер, созданный в AREA

Я использую MVC4 WEB API для отображения контроллера.

Сначала я создал созданный проект MVC4 WEBAPI, чтобы проект не открывал какую-либо веб-страницу, дожидаясь, когда внешнее приложение вызовет URL (WEB API). Проект в VS2010 настроен на запуск от IIS7 Express, а не VS2010 Dev Server. Это работает нормально, браузер предлагает мне загрузить файл. Для меня это нормально, так как браузер не знает, что делать с возвращаемыми данными (RAW TEXT).

Затем я создал AREA в области проекта MVC4, а затем добавил контроллер (тип WEB API).

Затем я снова запустил проект и в браузере ввел URL (WEB API). И он терпит неудачу.

Под ред.

Ответ 1

DefaultHttpControllerFactory по умолчанию не работает с областями. Чтобы получить эту функциональность, вы должны написать свой собственный HttpControllerFactory.

Вы можете найти, как это сделать на пост Как создать HttpControllerFactory для поддержки областей

Ответ 2

Хотя можно разместить контроллеры WebApi в разных областях, ASP.NET MVC 4 RC по-прежнему будет обрабатывать эти ApiControllers, как если бы они все находились в одном и том же пространстве имен. Это ограничение DefaultHttpControllerSelector, которое отвечает за выбор соответствующего ApiController.

К счастью, вы можете добавить свою собственную реализацию этого класса. На самом деле, я уже столкнулся с этой самой проблемой и написал "полезный для области" HttpControllerSelector. Вы можете найти мое сообщение в блоге об этой проблеме и ее решении здесь:

http://blogs.infosupport.com/asp-net-mvc-4-rc-getting-webapi-and-areas-to-play-nicely/