Почему неизмененный код шаблона в моем приложении MVC4 пытается дважды зарегистрировать области?
У меня есть новое приложение MVC4, которое я создаю на основе шаблона интернет-проекта MVC4 в бета-версии VS11. Теперь, когда я развертываю приложение на своем провайдере хостинга веб-сайтов и оставляю следующую строку активной в своем классе Global.asax, я получаю сообщение об ошибке, когда MVC пытается зарегистрировать уже существующий маршрут. Когда я закомментирую эту строку, все работает нормально, но ссылки на действия для конкретных контроллеров области не работают, как я спрашиваю в этом вопросе.
AreaRegistration.RegisterAllAreas();
2 ответа
Если у вас есть старая dll в каталоге bin развертывания (если вы переименовали свой проект или dll в какой-то момент), то вы получите эту ошибку.
Убедитесь, что каталог bin очищается при развертывании.
Это обычно происходит, когда у вас есть контроллер в области с тем же именем, что и контроллер на вашем корневом веб-сайте. то есть "WebsiteNamespace.Controllers.HomeController" и "WebsiteNamespace.Areas.MyArea.Controllers.HomeController".
Чтобы исправить это, вам нужно объявить пространства имен на маршрутах вашего базового сайта:
routes.MapRoute("Default", "{controller}/{action}/{id}", new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}, new[] { "WebsiteNamespace.Controllers" });