Почему неизмененный код шаблона в моем приложении 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" });
Другие вопросы по тегам