Решение:
Я также переместил файлы ashx и asmx одновременно с этим. Атрибут Class директив WebService / WebHandler был указан в неправильном пространстве имен. Мораль этой истории заключается в том, чтобы убедиться, что вы просматриваете разметку для всех as*x
файлов, для которых вы изменяете пространство имен, щелкнув по ним правой кнопкой мыши и выбрав «Просмотреть разметку».
Я испытываю ту же проблему, что и в этот вопрос и эта ссылка , но ни один из ответов не устранил мою проблему. (редактировать: настройка пакетного атрибута web.config работает, но это прикрытие, а не решение)
У меня проблема с пользовательским элементом управления, который я переместил из корневого каталога в подкаталог в том же проекте веб-приложения. Раньше он работал нормально, прежде чем я переехал. Когда я переместил его, он начал давать мне сообщение об ошибке.
Это говорит о том, что имя класса существует в двух файлах dll во временных файлах ASP.NET. Конечно, когда я открываю Reflector, он находится в двух библиотеках.
Если я переименую файл класса и ascx, все будет нормально. Ни в одном из файлов во всем моем приложении не используется оригинальное имя. Когда я переименовал файл, я открыл все файлы dll во временных файлах ASP.NET с помощью Reflector, и никаких ссылок на исходное имя класса не существует.
Так откуда взялась эта призрачная ссылка, как я могу это исправить?
Обновление: я буквально собрал все файлы в моем рабочем каталоге для решения и в своем временном каталоге для старого имени класса и удалил каждый файл, который его содержал. Затем я переименовал обратно в исходное сломанное имя и все еще получаю ошибку.
Ошибка сервера в «/» приложении.
Ошибка компиляции Описание: An
во время компиляции произошла ошибка
ресурса, необходимого для обслуживания этого
запрос. Пожалуйста, просмотрите следующее
конкретные детали ошибки и измените ваш
Исходный код соответственно.
Ошибка компилятора ssage: CS0433: Тип
'ASP.dashboard_badusercontrol_ascx'
существует в обоих 'c: \ Docunts и
Настройки \ я \ Local
Настройки \ Temp \ Временный ASP.NET
Файлы \ корень \ 3c2b7e1f \ 2e8a7620 \ App_Web_badusercontrol.ascx.a57ad085.iljdmp1p.dll»
и 'c: \ Документы и настройки \ me \ Local
Настройки \ Temp \ Временный ASP.NET
Файлы \ корень \ 3c2b7e1f \ 2e8a7620 \ App_Web_bhdqaimy.dll '
Ошибка источника:
Строка 1098: Строка 1099:
[System.Diagnostics.DebuggerNonUserCodeAttribute ()]
Линия 1100: частная
глобальный :: ASP.dashboard_badusercontrol_ascx
@__ BuildControlMyBadUserControl () {
Строка 1101:
глобальный :: ASP.dashboard_badusercontrol_ascx
@__ctrl; Строка 1102:
Исходный файл: c: \ Docunts и
Настройки \ я \ Local
Настройки \ Temp \ Временный ASP.NET
Файлы \ корень \ 3c2b7e1f \ 2e8a7620 \ App_Web_foo.aspx.a57ad085.1nw6dais.0.cs
Линия: 1100
Edit:
Итак, я сделал еще несколько тестов на то, что работает и не работает.
Допустим, исходное имя файла было «BadUserControl.ascx» в пространстве имен «MyNamespace».
Я переместил файл в каталог с именем «NewDirectory» и изменил пространство имен на «MyNamespace.NewDirectory». На моем жестком диске больше нет копий "BadUserControl.ascx". Я дважды проверил свою историю TFS, чтобы убедиться, что ЕДИНСТВЕННОЕ различие заключается в добавлении «.NewDirectory» к пространству имен в файлах разметки и кода кода.
Внутри этого пространства имен находятся два других пользовательских элемента управления с именами «OtherUserControl» и «AnotherUserControl».
Эта ситуация не срабатывает:
У меня есть 2 директивы реестра:
<%@ Register src="BadUserControl.ascx" tagname="BadUserControl" tagprefix="uc1" %>
<%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>
Эти ситуации работают:
Я сохраняю имя BadUserControl.ascx как есть.
У меня есть 1 директива Register на странице в том же пространстве имен:
<%@ Register src="BadUserControl.ascx" tagname="BadUserControl" tagprefix="uc1" %>
Я изменяю «BadUserControl.ascx» на «GoodUserControl.ascx»
У меня есть 2 директивы реестра:
<%@ Register src="GoodUserControl.ascx" tagname="GoodUserControl" tagprefix="uc1" %>
<%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>
2 Зарегистрировать директивы без BadUserControl.ascx вообще:
<%@ Register src="AnotherUserControl.ascx" tagname="AnotherUserControl" tagprefix="uc1" %>
<%@ Register src="OtherUserControl.ascx" tagname="OtherUserControl" tagprefix="uc2" %>