2009-04-08 9 views
17

Ho riscontrato un problema nella creazione della soluzione in VS2008. Normalmente, compila bene nell'ambiente. A volte, non riesce con:Riferimenti file circolari non consentiti

/xxx_WEB/secure/CMSManagedTargetPage.aspx(1): error ASPPARSE: Circular 
file references are not allowed. 

Ricostruisco e funziona correttamente.

Ora, tuttavia, sto installando un sistema CruiseControl.NET e sto testando il mio codice estratto con MSBuild prima di integrare la compilazione in CC. Ora, ogni volta che ho MSBuild, ottengo:

"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. 

Il problema è che non riesco a vedere dove questo riferimento è.

  • Ho cercato per il riferimento in tutta l'intera soluzione e FNCA ind riferimenti alla pagina stessa (CMSManagedTargetPage) altrove che nella pagina o il suo codebehind, o all'interno di una stringa, ad esempio:

    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";

Anche i miei riferimenti di assieme sono soddisfacenti (per quanto ne so). La mia applicazione Web è nella "parte superiore" delle dipendenze, e nulla la fa riferimento e quindi la pagina anomala non può quindi causare un riferimento circolare. Naturalmente, la pagina stessa può fare riferimento a qualcosa come un UserControl all'interno dello stesso assembly/sito Web, ma come accennato in precedenza, una ricerca su CMSManagedTargetPage non ha prodotto risultati, quindi questo non sta accadendo.

La modifica dell'attributo batch in web.config non ha avuto alcun effetto su MSBuild.

Trovo molto strano che "a volte" non funzioni in VS e fallisca sempre in MSBuild. Mi manca qualche sottigliezza?

risposta

-7

Quindi sembra che MasterPages stia causando più problemi con ASP.NET 2.0. Ho avuto problemi con loro prima, e ora sembra essere lo stesso.

Ho creato una nuova pagina, senza MasterPage e ha funzionato correttamente. MasterPage è letteralmente utilizzato solo per lo stile. Vergogna.

7

Mi sono imbattuto nel tuo post quando mi sono imbattuto nello stesso problema. Ci sono probabilmente un milione di soluzioni per un problema di riferimento Circolare, ma il mio era un risultato diretto di Pagine Master.

Ho creato accidentalmente una pagina utilizzando una pagina principale nidificata, al di fuori della cartella nidificata. Esempio:

Master1.Master 
Page.aspx 
(Folder1) 
Master2.Master 

Mentre Page.aspx è stato riferimento a Master2.Master come masterpage, avrebbe costruito normalmente, e l'errore quando ho "Pubblica".

3

Per me è stata registrata anche la pagina di aspx nella pagina principale.

Per esempio (nella pagina master):

<%@ Register Assembly="MyPage" Namespace="MyPage" TagPrefix="MyPage" %> 
... 
<asp:ContentPlaceHolder id="MyPage" runat="server"></asp:ContentPlaceHolder> 

E poi nella pagina 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"> 

Rimozione del Registro riparato.

8

Mi sono anche imbattuto in questo problema, sono riuscito a ottenere una pubblicazione di successo da Visual Studio selezionando "Usa nomi fissi e assemblaggi di pagine singole". Per qualche ragione sembra evitare che il compilatore pensi che ci sia un riferimento circolare.

+0

Come utilizzare *** Usa denominazione fissa ... *** in _targets_ script msbuild o di distribuzione (powershell)? – Kiquenet

1

Esperico questo comportamento se si dispone di un controllo utente (ASCX) incluso in una pagina principale.

Solitamente ignoro semplicemente l'errore poiché è andato dopo la seconda build.

+2

Ho avuto lo stesso problema. Ora uso un nella mia Pagina Master e nel codice sottostante aggiungo il controllo a livello di codice: phGoogleAnalyticsPageTracker.Controls.Add (PageLoadControl (virtualPathToGoogleAnalyticsPageTrackerControl)); – mathijsuitmegen

1

Questo errore esiste ancora in ASP.NET 4.0.

L'errore ho ottenuto è stato:

/DirA/PageA.aspx(3): error ASPPARSE: Circular file references are not allowed. 
/DirA/PageA.aspx(71): error ASPPARSE: Unknown server tag 'Controls:ControlA'. 

ControlA era lo stesso controllo come riferimento in PageA.aspx (3). Ho scoperto che dovevo spostare ControlA nella stessa directory di PageA per fare in modo che questo errore si fermasse.

4

Ho trovato che stavo ottenendo questo errore quando le pagine compilate in batch di Visual Studio. Sono stato in grado di risolvere questo problema impostando batch = "false" sull'elemento di compilazione in web.config.

Per essere più specifici, ho aggiunto un web.config nella directory che aveva pagine con problemi. Questo file web.config ha solo il seguente contenuto:

<?xml version="1.0"?> 

<configuration> 
    <system.web> 
    <!-- Added to prevent error ASPPARSE: Circular file references are not allowed. --> 
    <compilation batch="false" /> 
    </system.web> 
</configuration> 

In questo modo, Visual Studio/MSBuild possono ancora compilare in batch le altre directory non colpite, se si desidera.

Ulteriori informazioni sull'elemento di compilazione e sull'attributo batch sono disponibili at msdn.

12

Ripubblicato da:

http://ellisweb.net/2009/12/fixing-the-circular-file-references-are-not-allowed-error-in-asp-net/

Se si dispone la seguente configurazione: /folder1/Control1.ascx> Riferimenti Control2 /folder2/Control2.ascx> Riferimenti Control3 /cartella1/Control3. ascx Ciò significa che la cartella1 dll farà riferimento alla dll folder2 che farà nuovamente riferimento alla dll folder1, causando un "riferimento file circolare".


Questo mi ha aiutato fuori oggi; Ho avuto una pagina principale nella radice che fa riferimento a una pagina master in una cartella, che fa riferimento a una pagina diversa nella directory principale. Mischiare le pagine in cui le cartelle funzionavano come un incantesimo.

0

per me questi trucchi non funzionano

-setting lotto = true -deleting asp.I file temporanei nette e IIS ripristinate Sostituzione di file ascx sospetti

e il problema è stato da riferimento a un recente progetto aggiunto alla mia soluzione e scarico dopo build finale .e la rimozione di riferimento a questa raccolta appena aggiunto risolto il problema

0

Ho avuto lo stesso errore durante un'importante revisione di sviluppo. Nel mio caso particolare ciò era dovuto al fatto che stavo usando una cartella "JUNK" dove stavo trascinando e rilasciando file inutilizzati o rinominati. La mia cartella di posta indesiderata era in fase di compilazione e un file che ho eliminato di recente stava causando questo problema.

Ho risolto questo escludendo il singolo file nella mia cartella di posta indesiderata.

4

Ho avuto un problema simile e ho avuto un indizio da vicino dalla risposta di @ JBicford. Stavo usando Default.aspx nella root del sito web usando Master.master in un'altra cartella. Non so se ciò possa causare ciò, non abbiamo ancora testato questa soluzione.

Ma per chi è interessato a risolvere problemi di pubblicazione, l'opzione di seguito funziona per VS 2012, tutte le altre opzioni non riescono a causa di dipendenze non corrette su altre cartelle e pagine.

enter image description here

+0

Nel mio caso era Default.aspx nella root e nella pagina master in una cartella diversa. – Megrez7

0

Stesso problema su un codice che ho ereditato.

Il mio problema era che avevo un file nella cartella app_data, ma aveva uno spazio dei nomi di MyControls. Ho finito per spostare quel file fuori dalla cartella app_data e ho creato una nuova cartella "i miei controlli".

1

ho avuto questo problema, ma nessuno dei suggerimenti lavorato per me, il mio può essere un caso unico, ma solo nel caso in cui altre persone lo stesso problema:

miniera apparentemente non aveva nulla a che fare con Circular References e era infatti dovuto al mio output di build. Dopo un po 'di tempo in cui non sono riuscito a trovare da nessuna parte, ho posizionato un punto di interruzione sul controllo che non poteva essere caricato e ho ricevuto una notifica che mi diceva che non sarebbe stato colpito.

cambiare sia le proprietà del progetto e impostazioni di configurazione soluzione a costruire per Any CPU rettificato il problema.

+0

Se si esegue msbuild su command line aggiungendo/p: Platform = "Any CPU" lavorerà anche per risolvere questo problema – MadManMonty

2

Per quelli di voi che come me sono andato in giro per questo problema. Credo che potrei avere un'altra soluzione è che tutto il resto fallisce. Abbiamo riscontrato questo problema con un'applicazione MVC e abbiamo trascorso diverse settimane a tentare inutilmente i vari suggerimenti.

Quello che abbiamo scoperto è che stiamo eseguendo McAfee Virus Scanner V 8.0. abbiamo scoperto che quando disabilitiamo lo scanner all'accesso dalla Console di VirusScan siamo stati in grado di creare ed eseguire il debug senza problemi.

L'unica cosa è che quando questa impostazione è disabilitata Si riattiverà automaticamente ogni 15 minuti.

Ho sentito che questo valeva la condivisione ..

Grazie, Dean

Edit: Questo funziona solo se si ha accesso amministratore locale alla vostra macchina. Da un punto di vista della sicurezza ci sono valide preoccupazioni circa la disattivazione degli scanner AV (giustamente). In effetti, se sei in un ambiente di lavoro controllato da un amministratore di rete, potresti addirittura ottenere il respingimento da essi.Sono sicuro che c'è un altro modo per farlo, ma per ora questo sembra funzionare per noi, ma se trovo un altro rimedio (che è amico della rete), lo condividerò qui.

+0

Grazie per aver condiviso il tuo suggerimento riguardo gli scanner AV; abbiamo battuto la nostra testa contro il muro nei giorni scorsi cercando di risolvere questo problema e, una volta disabilitata la scansione AV on-demand in tempo reale sul nostro server di build Cruise Control .NET, questo errore "riferimenti circolari" è andato via. – ssahmed555

0

Nella maggior parte dei casi ciò si verifica dopo aver copiato le pagine di aspx. Assicurati che la tua classe indicata come Inherits="MyPage" non si ripeta su tutto il sito.

0

In realtà, questo post spiega perché accade e come risolvere il problema: http://www.gitshah.com/2011/04/how-to-fix-circular-file-references-are.html

Come risolvere i “riferimenti ai file circolari non sono ammessi” Errore in ASP.Net

Su uno dei miei progetti .Net, mi sono imbattuto in un problema interessante. Ho perso un paio d'ore per sistemarlo. Quindi, ho deciso di condividere le mie scoperte, in modo che gli altri non debbano perdere tempo a risolvere lo stesso problema.

La questione

il problema è stato piuttosto semplice, l'applicazione non avrebbe costruito. L'errore che stavo ottenendo durante la creazione di un progetto Web ASP.Net utilizzando MSBuild era: /someProject/Controls/A/ucA.ascx(2): errore ASPPARSE: i riferimenti ai file circolari non sono consentiti.

Ovviamente l'errore indica che nel codice è presente una sorta di riferimento circolare. Mi sono guardato intorno per controllare e ricontrollare, se ho creato un riferimento circolare per errore. Tuttavia, se esistesse un riferimento circolare, il codice non verrebbe compilato. Il codice si stava compilando bene ma non funzionava quando eseguivamo aspnet_compiler.exe.

Lo strumento di compilazione ASP.Net (aspnet_compiler.exe) consente di compilare un'applicazione Web ASP.Net, questo aiuta le prestazioni delle applicazioni poiché gli utenti finali non incontrano un ritardo alla prima richiesta all'applicazione.

Ho controllato di nuovo, ma certamente non c'era alcuna dipendenza circolare relativa al codice, quindi perché aspnet_compiler.exe si è lamentato dei riferimenti ai file circolari?

La spiegazione

Googling un po ', ho scoperto che, per impostazione predefinita, in un sito web del progetto, ASP.Net crea un DLL per cartella. Quindi, se si dispone della seguente configurazione:

Controllo utente ucA.ascx è presente nella directory "A". ucA.ascx fa riferimento a un altro controllo utente ucB.ascx Controllo utente ucB.ascx è presente nella directory "B". ucB.ascx fa riferimento a un altro controllo utente ucC.ascx Controllo utente ucC.ascx è presente nella directory "A".

La DLL della cartella A farà riferimento alla DLL della cartella B, che farà nuovamente riferimento alla DLL della cartella A, causando un "riferimento file circolare".

Questo è il motivo per cui aspnet_compiler.exe non riesce con l'errore "riferimento file circolare".

The Fix

Ci sono due modi in cui questo problema potrebbe essere fissato

riorganizzare i controlli utente (o MasterPages) per eliminare i riferimenti circolari. Di solito questo significa spostare i controlli utente in directory separate. Nel nostro esempio, spostando ucC.ascx in una nuova directory "C" (soluzione preferita). Utilizzare batch = "false" nel tag di compilazione del file web.config.Ciò causerà la creazione di una nuova DLL per ogni controllo/pagina nel sito. Questo dovrebbe correggere l'errore, ma è davvero pessimo per le prestazioni, quindi dovrebbe essere evitato.

Ho spostato ucC.ascx in una directory diversa e sì l'errore è andato via!