Не разрешены ссылки на круговые файлы
У меня возникла проблема с построением моего решения в VS2008. Как правило, он отлично компилируется в среде. Иногда он терпит неудачу:
/xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular
file references are not allowed.
Я перестраиваю и отлично работает.
Теперь, однако, я нахожусь в середине настройки системы CruiseControl.NET и тестирую свой проверочный код с помощью MSBuild, прежде чем интегрировать сборку в CC. Теперь, каждый раз, когда я MSBuild, я получаю:
"Q:\cc\xxx\checked out from svn\xxx.sln" (default target) (1) ->
(xxx_WEB target) ->
/xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular
file references are not allowed.
Проблема в том, что я не вижу, где эта ссылка.
-
Я искал ссылку по всему решению и не могу ссылаться на саму страницу (CMSManagedTargetPage) в любом месте, кроме страницы или кода, или внутри строки, например:
C:\dev2008\xxx\IWW.xxx.ASPNET\AspxHttpHandler.cs(82): inputFile = context.Server.MapPath( "~/secure/CMSManagedTargetPage.aspx" ); C:\dev2008\xxx\IWW.xxx.ASPNET\AspxHttpHandler.cs(83): virtualPath = "~/secure/CMSManagedTargetPage.aspx";
Мои ссылки на сборку также прекрасны (насколько я знаю). Мое веб-приложение находится в верхней части зависимостей, и ничто не ссылается на него, поэтому страница с ошибками не может вызвать циклическую ссылку. Конечно, сама страница может ссылаться на что-то вроде UserControl на том же сайте сборки/веб-сайта, но, как упоминалось ранее, поиск на CMSManagedTargetPage не дал никаких результатов, поэтому этого не происходит.
Изменение атрибута партии в файле web.config не повлияло на MSBuild.
Мне очень странно, что он "иногда" терпит неудачу в VS и всегда терпит неудачу в MSBuild. Мне не хватает какой-то тонкости?
Ответы
Ответ 1
Итак, кажется, что MasterPages вызывает больше проблем с ASP.NET 2.0. Раньше у меня были проблемы с ними, и теперь они кажутся одинаковыми.
Я создал новую страницу без MasterPage, и она отлично работала. MasterPage буквально используется только для стилизации. Позор.
Ответ 2
Отправлено с:
http://ellisweb.net/2009/12/fixing-the-circular-file-references-are-not-allowed-error-in-asp-net/
Если у вас есть следующая настройка:
/folder 1/Control1.ascx > Ссылки Control2
/folder 2/Control2.ascx > Ссылки Control3
/folder 1/Control3.ascx
Это означает, что dll folder1 будет ссылаться на dll folder2, которая снова будет ссылаться на dll folder1, вызывая "круговую ссылку на файл".
Это помогло мне сегодня; У меня была главная страница в корне, ссылающаяся на главную страницу в папке, в которой указана другая страница в корне. Перетасовка страниц, в которых папки работали как шарм.
Ответ 3
Я также столкнулся с этой проблемой, смог получить успешную публикацию из Visual Studio, выбрав "Использовать фиксированные имена и узлы для одной страницы". По какой-то причине, похоже, что избежать компиляционного мышления есть круговая ссылка.
Ответ 4
Я столкнулся с вашим сообщением, когда столкнулся с той же проблемой. Есть, вероятно, миллион решений проблемы Circular Reference, но мой был прямым результатом мастер-страниц.
Я случайно создал страницу, используя вложенную главную страницу, вне вложенной папки.
Пример:
Master1.Master
Page.aspx
(Folder1)
Master2.Master
В то время как page.aspx ссылался на Master2.Master как на свою главную страницу, он будет строить нормально и будет ошибкой, когда я "Опубликую".
Ответ 5
Я обнаружил, что получаю эту ошибку, когда пакетная компиляция страниц Visual Studio. Я смог исправить эту проблему, установив batch = "false" в элемент компиляции в web.config.
Чтобы быть более конкретным, я добавил web.config в каталог, в котором были страницы с проблемами. Этот файл web.config имеет только следующий контент:
<?xml version="1.0"?>
<configuration>
<system.web>
<!-- Added to prevent error ASPPARSE: Circular file references are not allowed. -->
<compilation batch="false" />
</system.web>
</configuration>
Таким образом, Visual Studio/MSBuild все еще может компилировать другие не затронутые каталоги, если они пожелают.
Дополнительная информация об элементе компиляции и атрибуте пакета доступна в msdn.
Ответ 6
У меня была аналогичная проблема, и я получил близкую подсказку от ответа @JBicford. Я использовал Default.aspx в корневом каталоге веб-сайта, используя Master.master в другой папке. Не знаю, может ли это быть причиной этого, еще не протестировал это решение.
Но для тех, кто заинтересован в сортировке публикаций, ниже опция работает для VS 2012, все остальные опции терпят неудачу из-за неправильных зависимостей от других папок и страниц.
![enter image description here]()
Ответ 7
Для меня он также регистрировал страницу aspx на главной странице.
Например (на главной странице):
<%@ Register Assembly="MyPage" Namespace="MyPage" TagPrefix="MyPage" %>
...
<asp:ContentPlaceHolder id="MyPage" runat="server"></asp:ContentPlaceHolder>
И затем на странице aspx:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
CodeFile="MyPage.aspx.cs" Inherits="MyPage" Title="Untitled Page" %>
<asp:Content ID="SomeContent" ContentPlaceHolderID="MyPage" Runat="Server">
Удаление регистра фиксировало его.
Ответ 8
Для тех из вас, кто, как я, обошел вокруг этого вопроса. Я верю, что у меня может быть другое решение, иначе все провалится. У нас была эта проблема с приложением MVC, и мы провели несколько недель, пытаясь разобраться с различными предложениями.
Мы выяснили, что мы запускаем McAfee Virus scanner V 8.0. мы обнаружили, что когда мы отключили сканер On-Access с консоли VirusScan, мы могли создавать и отлаживать без проблем.
Единственное, что когда этот параметр отключен, автоматически перезапускается каждые 15 минут.
Я чувствовал, что это стоит того, чтобы поделиться.
Спасибо,
Дин
Изменить: это работает, только если у вас есть доступ локального администратора к вашему компьютеру. С точки зрения безопасности есть веские опасения по поводу отключения AV-сканеров (по праву). Фактически, если вы работаете в рабочей среде, которая контролируется сетевым администратором, вы можете даже отталкиваться от них. Я уверен, что есть еще один способ сделать это, но пока это, похоже, работает для нас, но если я найду еще один способ обхода (это чистый админ-код), я поделюсь здесь.
Ответ 9
Я испытываю это поведение, если у меня есть пользовательский элемент управления (ASCX), который включен в главную страницу.
Обычно я просто игнорирую ошибку, так как она ушла после второй сборки.
Ответ 10
Эта ошибка все еще существует в ASP.NET 4.0.
Я получил ошибку:
/DirA/PageA.aspx(3): error ASPPARSE: Circular file references are not allowed.
/DirA/PageA.aspx(71): error ASPPARSE: Unknown server tag 'Controls:ControlA'.
ControlA был тем же самым контролем, что и ссылка на странице PageA.aspx(3). Я обнаружил, что мне пришлось переместить ControlA в тот же каталог, что и PageA, чтобы остановить эту ошибку.
Ответ 11
У меня была эта проблема, но ни один из предложений не работал у меня, мой может быть уникальным случаем, но на случай, если другие люди столкнутся с одной и той же проблемой:
Моя, казалось бы, не имела никакого отношения к Circular References
и была на самом деле из-за моего вывода сборки. Через какое-то время я нигде не поставил точку останова на элемент управления, который не мог быть загружен, и получил уведомление, сообщающее мне, что оно не пострадает.
Изменение свойств проекта и настроек конфигурации для сборки для Any CPU
устраняет проблему.
Ответ 12
для меня эти трюки не срабатывали
-setting batch = true
-deleting asp.net Temp файлы и IIS reset
-выполнение подозрительных файлов ascx
и проблема заключалась в ссылке на недавний добавленный проект на мое решение и выгрузке его после окончательной сборки. И удаление ссылки на эту недавно добавленную библиотеку решило проблему
Ответ 13
У меня была такая же ошибка во время капитального ремонта. В моем конкретном случае это было связано с тем, что я использовал папку "JUNK", в которой я перетаскивал неиспользуемые или переименованные файлы. Моя мусорная папка скомпилировалась, и файл, который я недавно удалил, вызывал эту проблему.
Я исправил это, исключив отдельный файл в папку мусора.
Ответ 14
Такая же проблема для некоторого кода, который я унаследовал.
Моя проблема заключалась в том, что у меня был файл в папке app_data, но в нем было пространство имен MyControls. Я закончил перемещение этого файла из папки app_data и создал новую папку "Мои элементы управления".
Ответ 15
В большинстве случаев это происходит после копирования страниц aspx.
Убедитесь, что ваш класс, указанный как Inherits="MyPage"
, не повторяется на всем сайте.
Ответ 16
На самом деле, этот пост объясняет, почему это происходит и как его исправить:
http://www.gitshah.com/2011/04/how-to-fix-circular-file-references-are.html
Как исправить "ссылки на круговые файлы не разрешены" Ошибка в ASP.Net
В одном из моих .Net-проектов я столкнулся с интересной проблемой. Я потратил пару часов на это. Поэтому я решил поделиться своими выводами, так что другим не нужно тратить время на то, чтобы решить ту же проблему.
Проблема
Проблема была довольно простой, приложение не создавало. Ошибка, которую я получал при создании веб-проекта ASP.Net с использованием MSBuild, была: /someProject/Controls/A/ucA.ascx(2): ошибка ASPPARSE: ссылки на круговые файлы не разрешены.
Конечно, ошибка говорит, что в моем коде есть какая-то круговая ссылка. Я осмотрелся, чтобы проверить и перепроверять, если я создал круговую ссылку по ошибке. Однако, если бы была какая-либо циклическая ссылка, код не компилировался. Код компилировался отлично, но он был неудачным, когда мы запустили aspnet_compiler.exe.
Средство компиляции ASP.Net(aspnet_compiler.exe) позволяет вам скомпилировать веб-приложение ASP.Net, это помогает производительности приложений, поскольку конечные пользователи не сталкиваются с задержкой при первом запросе приложения.
Я снова проверил, но, конечно, не было никакой зависимости от кода, связанной с кругом, а затем почему aspnet_compiler.exe жаловался на круговые ссылки на файлы?
Объяснение
Поймав немного, я обнаружил, что по умолчанию в проекте веб-сайта ASP.Net создает одну DLL для каждой папки. Следовательно, если у вас есть следующая настройка:
Пользовательский контроль ucA.ascx присутствует в каталоге "A". ucA.ascx относится к другому пользовательскому элементу управления ucB.ascx Пользовательский контроль ucB.ascx присутствует в каталоге "B". ucB.ascx относится к другому пользовательскому элементу управления ucC.ascx Пользовательский контроль ucC.ascx присутствует в каталоге "A".
В папке DLL будет ссылаться на папку B DLL, которая снова будет ссылаться на папку DLL, вызывая "круговую ссылку на файл".
Это причина, по которой ошибка aspnet_compiler.exe завершилась с ошибкой "круговая ссылка на файл".
Исправление
Можно устранить эту проблему двумя способами:
Перегруппируйте пользовательские элементы управления (или MasterPages), чтобы удалить циклические ссылки. Обычно это означает перемещение элементов управления пользователя в отдельных каталогах. В нашем примере перемещение ucC.ascx в новый каталог "C" (предпочтительное решение). Используйте batch = "false" в теге компиляции файла web.config. Это приведет к созданию новой DLL для каждого элемента управления/страницы на сайте. Это должно исправить ошибку, но на самом деле отвратительно для производительности, поэтому ее следует избегать.
Я переместил ucC.ascx в другой каталог и да ошибка исчезла!