FIX: ╚ visualizzato un messaggio di errore di "Pi¨ controlli con lo stesso ID" quando si aggiungono in modo dinamico di controlli utente memorizzati nella cache a WebForms

Traduzione articoli Traduzione articoli
Identificativo articolo: 834608 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando Ŕ aggiungere dinamicamente controlli utente memorizzato nella cache un WebForm, viene visualizzato un messaggio di errore analogo al seguente quando si visualizza la pagina Web:
Sono stati rilevati pi¨ controlli con lo stesso ID '_909b6e15b33'. FindControl disporre i controlli ID univoci.

Descrizione: Si Ŕ verificata un'eccezione non gestita durante l'esecuzione della richiesta web corrente. Eseguire l'analisi dello stack per ulteriori informazioni sull'errore e in cui ha avuto origine nel codice.

Dettagli eccezione: System.Web.HttpException: sono stati rilevati pi¨ controlli con lo stesso ID '_909b6e15b33'. FindControl disporre i controlli ID univoci.
Nota La parola "web" Ŕ in maiuscolo in modo errato nel messaggio di errore.

Nota Per ulteriori informazioni sui controlli utente e la memorizzazione nella cache di output, vedere la sezione "Riferimenti" di questo articolo.

Cause

Questo problema si verifica perchÚ un nome univoco viene passato alla funzione LoadCachedControl quando i controlli dinamici vengono creati dalla cache. Questo nome univoco Ŕ destinato a essere l'ID univoco assegnato a questa istanza del controllo utente caricato in modo dinamico. Tuttavia, viene utilizzato un ID generato e l'ID generato non Ŕ univoco tra i controlli utente caricato in modo dinamico. Questo comportamento causa il problema menzionato nella sezione "Sintomi" di questo articolo.

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
837000La proprietÓ PartialCachingControl.CachedControl restituisce sempre un riferimento null

Risoluzione

importante Questo aggiornamento rapido (hotfix) contiene due tipi di pacchetti: un pacchetto di Microsoft Windows Installer e un pacchetto di Gestione componenti facoltativi (OCM). Se si utilizza Windows Server 2003, Ŕ necessario specificare che Ŕ necessario installare l'aggiornamento di OCM (Windows Server 2003), poichÚ la protezione file di Windows Server 2003 controlla i file di .NET Framework 1.1. Se si utilizza un sistema operativo che Ŕ diverso da Windows Server 2003, Ŕ necessario continuare a utilizzare il pacchetto di Windows Installer.

Informazioni sull'aggiornamento del software

Un hotfix supportato Ŕ disponibile da Microsoft, tuttavia Ŕ destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Pertanto, se non si Ŕ notevolmente interessati da questo problema, si consiglia di attendere il successivo Microsoft .NET Framework 1.1 Service Pack 1 che contiene questo aggiornamento rapido (hotfix).

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverÓ il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

NecessitÓ di riavvio

Potrebbe essere necessario riavviare il computer se eventuali servizi o applicazioni in esecuzione che utilizzare i file elencati nella sezione "Informazioni sui file" di questo articolo.

Informazioni sui file

La versione inglese di questo aggiornamento software presenta gli attributi di file (o successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   04-Feb-2004  04:14  1.1.4322.996      258,048  Aspnet_isapi.dll  
   04-Feb-2004  04:14  1.1.4322.996       20,480  Aspnet_regiis.exe  
   04-Feb-2004  04:14  1.1.4322.996       32,768  Aspnet_state.exe  
   04-Feb-2004  04:14  1.1.4322.996       32,768  Aspnet_wp.exe    
   16-May-2003  00:49                     33,522  Installpersistsqlstate.sql
   16-May-2003  00:49                     34,150  Installsqlstate.sql
   04-Feb-2004  04:05  1.1.4322.996       94,208  Perfcounter.dll  
   04-Feb-2004  04:10                      8,571  Smartnav.js
   05-Feb-2004  05:11  1.1.4322.996    1,220,608  System.dll       
   05-Feb-2004  05:11  1.1.4322.996      241,664  System.messaging.dll  
   05-Feb-2004  05:11  1.1.4322.996      323,584  System.runtime.remoting.dll  
   05-Feb-2004  05:11  1.1.4322.996      131,072  System.runtime.serialization.formatters.soap.dll  
   05-Feb-2004  05:11  1.1.4322.996    1,257,472  System.web.dll   
   05-Feb-2004  05:11  1.1.4322.996      819,200  System.web.mobile.dll  
   05-Feb-2004  05:11  1.1.4322.996      569,344  System.web.services.dll  
   05-Feb-2004  05:11  1.1.4322.996    1,339,392  System.xml.dll   
   04-Feb-2004  04:10                     14,482  Webuivalidation.js

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a" di questo articolo.

Informazioni

Procedura per riprodurre il problema

  1. Creare la cartella Web, ad esempio, creare la cartella \inetpub\wwwrooot\PageCaching.
  2. Utilizzare il codice riportato di seguito per creare un controllo utente denominato Test1.ascx e salvarlo nella cartella Web creata nel passaggio 1:
    <%@ OutputCache Duration="60" VaryByParam="none" %>
    <%@ Control Language="c#" "%>
    <asp:Label id="lblTest1" runat="server">Test 1 Control</asp:Label>&nbsp;
    <asp:Label id="lblDynamic" runat="server">Dynamic</asp:Label>
  3. Utilizzare il codice riportato di seguito per creare un controllo utente denominato Test2.ascx e salvarlo nella cartella Web creata nel passaggio 1:
    <%@ OutputCache Duration="60" VaryByParam="none" %>
    <%@ Control Language="c#" "%>
    <asp:Label id="lblTest1" runat="server">Test 2 Control</asp:Label>&nbsp;
    <asp:Label id="lblDynamic" runat="server">Dynamic</asp:Label>
  4. Use the following code to create a Web form that is named PageCaching.aspx, and then save it to the Web folder that was created in step 1:
    <script runat=server>
        void Page_Init(Object sender, EventArgs ev)
        {
    			Control Pane = Page.FindControl("uc1");
    			Control Item = (Control) LoadCachedControl("test1.ascx", "Dynamic1a");
    			Pane.Controls.Add(Item);
    
    			Pane = Page.FindControl("uc2");
    			Item = (Control) LoadCachedControl("test2.ascx", "Dynamic2a");
    			Pane.Controls.Add(Item);
    
    			Pane = Page.FindControl("uc3");
        }
    
    public PartialCachingControl LoadCachedControl(string r_ControlName, string r_ControlID)
    {
    			PartialCachingControl Control = (PartialCachingControl) Page.LoadControl(r_ControlName);
    			Control.ID = r_ControlID;
    			return Control;
    }			                                                
    </script>
    
    
    <%@ Page language="c#" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    	<HEAD>
    		<title>WebForm1</title>
    		<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" Content="C#">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    	</HEAD>
    	<body>
    		<form id="Form1" method="post" runat="server">
    			<table>
    				<tr>
    					<td id="uc1" runat="server"></td>
    				</tr>
    				<tr>
    					<td id="uc2" runat="server"></td>
    				</tr>
    				<tr>
    					<td id="uc3" runat="server"></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </HTML>
  5. Individuare http://localhost/PageCaching/PageCaching.aspx. ╚ visualizzato il messaggio di errore descritto nella sezione "Sintomi" di questo articolo.
Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft

Utilizzando la classe PartialCachingControl

La classe PartialCachingControl dispone di una proprietÓ CacheControl . La proprietÓ CacheControl pu˛ essere utilizzata per determinare se un controllo utente Ŕ giÓ stato inserito nella cache. La proprietÓ di CacheControl restituisce il controllo utente solo quando l'output dell'output del controllo utente non viene memorizzato nella cache. Se l'output del controllo utente presente nella cache di output, la proprietÓ CacheControl restituisce un riferimento null, poichÚ il controllo non viene creata un'istanza (in Microsoft Visual Basic, la proprietÓ CacheControl restituisce Nothing). Tuttavia, la proprietÓ CacheControl restituisce sempre FALSE se la classe di PartialCachingControl non nella struttura dei controlli.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
306459Cenni preliminari sui controlli server ASP.NET
308378Come eseguire il caching dei frammenti in ASP.NET utilizzando Visual C# .NET
308645Come eseguire il caching dei frammenti in ASP.NET utilizzando Visual Basic .NET

ProprietÓ

Identificativo articolo: 834608 - Ultima modifica: venerdý 7 aprile 2006 - Revisione: 4.2
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft ASP.NET 1.1
Chiavi:á
kbmt kbqfe kbhotfixserver kbfix kbnetframe110presp1fix kbcodegen kbcode kbbug KB834608 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 834608
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com