Вопрос

Я получаю следующую ошибку при попытке запуска моего приложения ASP.NET MVC:

Запрос на «аккаунт» нашел следующие контроллеры сопоставления: uqs.Controllers.Admin.AccountController MvcApplication1.Controllers.AccountController

Я искал проект для MvcApplication1.Controllers.AccountController Чтобы удалить его, но я не могу найти совпадение.

Я пытаюсь зарегистрировать маршрут, чтобы исправить это:

 routes.MapRoute(
     "LogAccount", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Account", action = "LogOn", id = "" },
     new string[] { "uqs.Controllers.Admin" } // Parameter defaults
 );

Но это не решило это.

Были обнаружены несколько типов, которые соответствуют контроллеру с именем «аккаунт».

Как я могу решить эту проблему?

Это было полезно?

Решение

Вы не можете иметь более одного контроллера с именем Account В вашем приложении даже в разных пространствах имен.

Вы должны иметь эти контроллеры расщеплены Area (Особенность в ASP.NET MVC 2).

Если вы проведете поиск для AccountController Вы найдете все контроллеры по имени Account в вашем приложении; и отодвинуть их в разные Areas Если вы хотите оба из них или удалить один.

Другие советы

Если вы восстанавливаете свой проект и измените пространство имен по умолчанию и узел из «MVCApplication1» на «UQS», вы можете в конечном итоге с 2 сбоями в вашем каталоге Bin (новый и старый). Вы можете получить эту ошибку, потому что AccountController находится в обеих сборках.

Очистите каталог BIN старого MVCApplication1.dll.

Имел эту же проблему. Очистил мусорное ведро, и мне было хорошо, чтобы пойти.

Слегка запутанная вариация проблемы (аналогично тем, что она вызывает одинаковое сообщение об ошибке), может происходить даже с предоставленными пространствами имен. MVC 3 Я думаю, что маленький выбор MVC 2 на этом фронте.


Краткий ответ:

Убедитесь, что пространство имен вашего контроллера на самом деле является пространством имен, указанное в MapRoute вызов!!


Длительный ответ:

У меня есть 3 области: default ("") / Facebook / Store и у каждого у каждого есть AdminController

У меня есть маршрут, как это (для моей области по умолчанию):

routes.MapRoute(
     "Default",
     "{controller}/{action}/{id}",
     new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
     new string[] { "RR.Controllers.Main" }
);

Запрос на / admin дал следующую ошибку:

Были обнаружены несколько типов, которые соответствуют контроллеру с именем «admin». Это может произойти, если маршрут, который обслуживает этот запрос ('{Controller} / {Action} / {id}'), не указывает пространства имен ...

Запрос на «admin» нашел следующие контроллеры сопоставления:

Rr.facebookcontrollers.admincontroller
Rr.controllers.admincontroller
Rr.storecontrollers.admincontroller.

Но подожди минутку! Разве я не уточнил пространство имен контроллера ....? Что происходит.... ?

Ну, оказалось, что это пространство имен контроллера администратора по умолчанию, было RR_MVC.Controller вместо Rolling_Razor_MVC.Controller.Main.

По какой-то причине в MVC 2 это не дало проблем, но в MVC 3 это делает. Я думаю, что MVC 3 просто требует, чтобы вы были более явными, когда есть потенциальные одобрения.

AccountController автоматически генерируется шаблоном Studio Asp.net MVC Visual Studio. Это находится в Controllers\AccountController.cs. Отказ Попробуйте в поисках этого в проекте и удалить его.

У меня была эта проблема ...

Решается путем удаления ссылки на проект в одном из файлов .csproj

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top