Подтвердить что ты не робот

Не разрешены ссылки на круговые файлы

У меня возникла проблема с построением моего решения в 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. Мне не хватает какой-то тонкости?

4b9b3361

Ответ 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 в другой каталог и да ошибка исчезла!