Переименование пространства имен ASP.NET MVC - PullRequest
15 голосов
/ 05 февраля 2009

Я переименовал свой проект из MyProjectName в MyNewProjectName. Я сделал полный поиск / замену решения и также изменил тестовый проект. В Default.aspx.cs я получаю исключение InvalidOptivationException с

"Имя контроллера 'Home' неоднозначно для следующих типов: MyNewProjectName.Controllers.HomeController MyProjectName.Controllers.HomeController. "

Как мне это исправить? Спасибо

Ответы [ 6 ]

33 голосов
/ 05 февраля 2009

Вы пытались восстановить (щелкните правой кнопкой мыши на проекте и выберите «Перестроить»)? Также проверьте корзину, чтобы убедиться, что там находится только сборка с новым именем. Кроме того, дважды проверьте свойства проекта, чтобы убедиться, что имя сборки выводится. Если вы не уверены, как называется полученная сборка, удалите все библиотеки DLL из bin и пересоберите.

8 голосов
/ 06 июля 2009

Вам нужно проверить папку / bin в вашем веб-проекте MVC, и либо удалить все внутри и сделать новую сборку, либо удалить старую DLL (MyProjectName.dll).

Среда выполнения ASP.Net MVC использует отражение, чтобы определить, к какому контроллеру должен быть передан запрос на основе информации о маршрутизации, и находит два контроллера, которые соответствуют критериям (имеют одно и то же имя), и каждый находится в отдельности. сборка. Вот почему вы получаете исключение.

Выполнение Очистка , похоже, не очищает папку bin. Поэтому вы должны удалить файл вручную.

5 голосов
/ 03 ноября 2011

Что касается меня, у меня была ссылка в web.config папки View, после ее изменения все работало нормально!

2 голосов
/ 06 июля 2010

Дважды щелкните или щелкните правой кнопкой мыши MyProject и откройте. В настройках приложения измените имя сборки и корневое пространство имен в соответствии с переименованным именем проекта.

0 голосов
/ 01 марта 2019

В моем проекте я столкнулся с такими же симптомами. Чтобы исправить, что я должен был:

  • Перейдите к вашему App_Start и проверьте, правильно ли ваше новое пространство имен внутри классов.

  • Щелкните правой кнопкой мыши Global.asax и перейдите в раздел «Показать разметку» и убедитесь, что у атрибута «Наследование» есть новое пространство имен.

Как:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyNewNamespace.MvcApplication" Language="C#" %>

Перестройте приложение.

0 голосов
/ 14 сентября 2011

Щелкните правой кнопкой мыши по проекту, выберите «Открыть папку в проводнике Windows».

Удалить объекты "OLDPROJECTNAME" в / bin и / obj

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