Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

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
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: 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

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 834608 - Ultima revisione: 04/07/2006 07:05:38 - Revisione: 4.2

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

  • kbmt kbqfe kbhotfixserver kbfix kbnetframe110presp1fix kbcodegen kbcode kbbug KB834608 KbMtit
Feedback