Было найдено несколько типов, которые соответствуют контроллеру с именем 'Home' - PullRequest
297 голосов
/ 21 октября 2011

В настоящее время у меня есть два несвязанных проекта MVC3, размещенных в сети.

Один работает нормально, другой не работает, выдавая ошибку:

Найдено несколько типов, соответствующихконтроллер по имени «Дом».Это может произойти, если маршрут, обслуживающий этот запрос ('{controller} / {action} / {id}'), не указывает пространства имен для поиска контроллера, соответствующего запросу.

Если это так, зарегистрируйте этот маршрут, вызвав перегрузку метода 'MapRoute', который принимает параметр 'namespaces'.

Способ работы моего хостера заключается в том, что ондает мне доступ по FTP, и в этой папке у меня есть две другие папки, по одной для каждого из моих приложений.

ftpFolderA2 / foo.com

ftpFolderA2 / bar.com

foo.com работает нормально, я публикую свое приложение в локальной файловой системе, затем отправляю по FTP содержимое, и оно работает.

Когда я загружаю и пытаюсь запустить bar.com, возникает проблема выше имешает мне использовать мой сайт. Все время, пока foo.com все еще работает .

Ищет ли bar.com ВЕЗДЕ из контроллеров внутри ftpFolderA2, и поэтому он находит еще один HomeController?Как я могу сказать, чтобы он смотрел только в папке «Контроллер» так, как должен?

Факты:

  1. Не используются области.Это два ПОЛНОСТЬЮ не связанных проекта.Я помещаю каждый опубликованный проект в каждую соответствующую папку.Ничего особенного.
  2. В каждом проекте есть только 1 HomeController.

Может кто-нибудь подтвердить, что это проблема?

Ответы [ 26 ]

1 голос
/ 21 февраля 2016

Другой вариант этой ошибки - когда вы используете resharper и используете некоторые «авто» опции рефакторинга, которые включают изменение имени пространства имен. Это то, что случилось со мной. Чтобы решить проблему с таким сценарием, удалите папку bin

0 голосов
/ 04 апреля 2019

Я обнаружил, что эта ошибка может возникать на традиционном веб-сайте ASP.NET при создании контроллера в каталоге, отличном от App_Code (иногда Visual Studio предотвращает это).

Устанавливает тип файла как «Компилировать», тогда как любой код, добавленный к «App_Code», устанавливается в «Содержимое». Если вы копируете или перемещаете файл в App_Code, тогда он все еще установлен как «Компилировать».

Я подозреваю, что это как-то связано с работой проекта веб-сайта, так как у проектов веб-сайта нет операции сборки. Очистка папки bin и изменение на "Content", кажется, исправят это.

0 голосов
/ 13 ноября 2018

У меня есть два проекта в одном решении с одинаковым именем контроллера.Я удалил вторую ссылку на проект в первом проекте, и проблема решена

0 голосов
/ 18 июня 2014

Мы обнаружили, что получили эту ошибку, когда произошел конфликт в нашей сборке, который появился как предупреждение.

Мы не получили детализацию, пока не увеличили Visual Studio -> Инструменты -> Параметры -> Проекты и решения -> Построить и запустить -> MSBuild - подробность сборки проекта до Подробная.

Наш проект представляет собой веб-приложение .net v4, и возник конфликт между System.Net.Http (v2.0.0.0) и System.Net.Http (v4.0.0.0).Наш проект ссылался на версию v2 файла из пакета (включенного с помощью nuget).Когда мы удалили ссылку и добавили ссылку на версию v4, сборка работала (без предупреждений), и ошибка была исправлена.

0 голосов
/ 13 сентября 2017

я столкнулся с подобной проблемой.и основной причиной было то, что у меня был один и тот же контроллер в двух разных областях.как только я удаляю один из них, он работает нормально.

У меня это будет полезно для вас.

Project Solution

0 голосов
/ 25 мая 2017

Если вы работаете в Episerver или другой CMS на основе MVC, вы можете обнаружить, что конкретное имя контроллера уже заявлено.

Это случилось со мной при попытке создать контроллер с именем FileUpload.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...