Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Versione originale del prodotto: Visual C++
Numero KB originale: 2028526
Riepilogo
Quando si compila un progetto ASP.NET usando Microsoft Visual Studio, è possibile che venga visualizzato un messaggio di errore simile al seguente:
Messaggio di errore del compilatore: CS0433: il tipo 'ASP.summary_common_controls_notes_ascx' esiste sia in 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msftx123.dll' e 'c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\Book_Details\abc12345\def8910\App_Web_msfty456.dll'
Descrizione: si è verificato un errore durante la compilazione di una risorsa necessaria per il servizio della richiesta. Esaminare i dettagli specifici dell'errore seguenti e modificare il codice sorgente in modo appropriato.
Errore di origine: riga 100: </div>
Riga 101: <h3 class="entry">New Notes</h3>
Riga 102: <bni:details id="details" runat="server" />
Riga 103: <span class="RedZone">1450</span>
Riga 104: <p>Riepilogo.</p>
File di origine: d:\http\post\publisher\default.aspx Riga: 102
Gli scenari comuni in cui può verificarsi questo errore sono descritti nelle sezioni seguenti.
Scenario 1: due assembly nella stessa cartella bin
Descrizione: una causa comune di questo errore è quando sono presenti due assembly nella stessa cartella bin dell'applicazione Web contenente due definizioni di classe, ma con lo stesso nome di classe. Ciò può verificarsi se più di un Default.aspx è stato compilato in un singolo assembly. In genere, ciò si verifica quando la pagina Master (Default.master) e la pagina ASPX predefinita (Default.aspx) dichiarano entrambe una classe _Default.
Soluzione: modificare il nome della classe della pagina master (da _Default nella maggior parte dei casi) e ricompilare il progetto. È importante risolvere eventuali conflitti di denominazione tra le classi.
Scenario 2: più riferimenti allo stesso assembly
Descrizione: i percorsi di riferimento in Visual Studio vengono usati per specificare il percorso della cartella per i riferimenti all'assembly usati dal progetto. È possibile che il percorso contenga un assembly e che l'assembly contenga lo stesso nome di classe. Potrebbero essere presenti più riferimenti aggiunti allo stesso assembly (possibilmente diversi nella versione o nel nome) che causano un conflitto di denominazione.
Soluzione: rimuovere il riferimento alla versione precedente. In Visual Studio fare clic con il pulsante destro del mouse sul sito Web e controllare i riferimenti nelle proprietà.
Scenario 3: Modifiche alle autorizzazioni predefinite
Descrizione: per impostazione predefinita, quando viene compilata un'applicazione Web ASP.NET, il codice compilato viene inserito nella cartella Temporary ASP.NET Files. Per impostazione predefinita, le autorizzazioni di accesso vengono concesse all'account utente locale ASP.NET. L'account dispone delle autorizzazioni di attendibilità elevata necessarie per accedere al codice compilato. È possibile che siano state apportate alcune modifiche alle autorizzazioni predefinite e che le modifiche potrebbero causare conflitti di controllo delle versioni. Un'altra possibilità è che il software antivirus potrebbe bloccare inavvertitamente un assembly.
Soluzione: deselezionare la cartella file di ASP.NET temporanea di tutti i contenuti.
Scenario 4: Compilazione batch
Descrizione: quando l'attributo batch nel file web.config è impostato su True, elimina il ritardo causato dalla compilazione necessaria quando si accede a un file per la prima volta. ASP.NET precompila tutti i file non compilati in modalità batch. Questa modalità batch causa ritardi la prima volta che i file vengono compilati.
L'impostazione dell'attributo batch su False può esporre eventuali errori di compilazione mascherati presenti nell'applicazione, ma non vengono segnalati. Più importante, indica ASP.NET di compilare dinamicamente singoli file .aspx/.ascx in assembly separati, anziché in un singolo assembly.
Soluzione: impostare batch=False nella sezione di <compilazione> in web.config. Questa azione deve essere considerata una soluzione temporanea. Batch=False nella sezione di compilazione ha un impatto significativo sulle prestazioni sui tempi di compilazione per l'applicazione in Visual Studio.
Scenario 5: La modifica di web.config riavvia l'AppDomain
Descrizione: la modifica del file web.config per un'applicazione ASP.NET o la modifica di un file nella cartella bin ,ad esempio l'aggiunta, l'eliminazione o la ridenominazione, determina il riavvio di AppDomain. Quando si verificano queste azioni, tutti gli stati della sessione vengono persi e gli elementi memorizzati nella cache vengono rimossi dalla cache al riavvio del sito Web. Il problema potrebbe essere causato da uno stato incoerente nell'applicazione Web.
Soluzione: attivare un riavvio di AppDomain toccando (modifica) il file web.config.
Scenario 6: Codice sorgente modificato non ancora ricompilato dinamicamente
Descrizione: è possibile archiviare il codice sorgente nella cartella App_Code e il codice verrà compilato automaticamente in fase di esecuzione. L'assembly risultante è accessibile a qualsiasi altro codice nell'applicazione Web. La cartella App_Code funziona pertanto in modo analogo alla cartella Bin, ad eccezione del fatto che è possibile archiviare il codice sorgente in esso anziché il codice compilato. La classe verrà ricompilata quando si verifica una modifica nel file di origine. Se si verifica un conflitto a causa di un assembly obsoleto, l'uso forzato di una ricompilazione potrebbe risolvere il problema.
Soluzione: toccare un file nelle cartelle Bin o App_Code per attivare una ricompilazione completa.