ASP.Net MVC 4 - найдено несколько типов, соответствующих контроллеру с именем «Home». - PullRequest
3 голосов
/ 24 февраля 2012

Просто создал новый проект MVC 4 и скопировал некоторые области из проекта MVC 3.Я дважды проверил все мои web.configs и arearegistration.cs.Все мои конфиги указывают на правильные версии razor и MVC и мои маршруты. Подпись MapRoute включает в себя правильные параметры пространства имен, я также проверил и убедился, что в моем пуле IIS размещено не более одного приложения MVC.файл .asax ...

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
            new string[] { "MVCProject.Web.Controllers" }
        );

файлы регистрации моей области ...

context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "MVCProject.Web.Areas.Admin.Controllers" }
        );

и ...

context.MapRoute(
            "Terminator_default",
            "Terminator/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "MVCProject.Web.Areas.Terminator.Controllers" }
        );

Я проверил все, что знаючтобы проверить, чтобы исправить это, загружается также правильная область DLL ...

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Хорошо, я понял, что происходит. Я отвечу на свой вопрос в надежде, что это поможет кому-то еще.

Обычно, когда вы создаете новый проект MVC в VS 2010, вы получаете то, что шаблон дает вам в виде пространств имен и заглушенного домашнего контроллера или двух. Мне нравится разбивать мое приложение MVC на обычные слои (Data, Model & Service), где каждый слой находится в своем собственном проекте. Затем я переименовываю свой веб-проект, чтобы добавить .web к имени проекта и пространству имен «MyWebProject.Web».

Шаблон создал приложение до того, как я переименовал веб-проект, и отключил домашний контроллер для меня. Домашний контроллер, созданный шаблоном, находился в пространстве имен MyWebProject.Controllers, мои маршруты .MapRoutes () использовал MyWebProject.Web.Controllers в качестве параметра.

Как только я переместил свои заглушенные контроллеры, созданные шаблоном, в пространство имен MyWebProject.Web.Controllers, это решило проблему.

0 голосов
/ 24 сентября 2013

Другая вероятная причина этой проблемы может быть найдена ниже:

несколько типов было найдено, что соответствует контролле-named-дом

...