FIX: Foutbericht 'Meerdere besturingselementen met dezelfde ID' als u gebruikersbesturingselementen in cache dynamisch aan webformulieren toevoegt

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 834608 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Wanneer u gebruikersbesturingselementen in cache dynamisch aan een webformulier toevoegt, wordt een foutbericht dat lijkt op het volgende wanneer u naar de webpagina:
Er zijn meerdere besturingselementen met dezelfde ID '_909b6e15b33' gevonden. FindControl vereist dat besturingselementen unieke id hebben.

Beschrijving: Een onverwerkte uitzondering opgetreden tijdens de uitvoering van de huidige webaanvraag. Raadpleeg de stacktracering voor meer informatie over de fout en de oorsprong in de code.

Details van uitzondering: System.Web.HttpException: Er zijn meerdere besturingselementen met dezelfde ID '_909b6e15b33' gevonden. FindControl vereist dat besturingselementen unieke id hebben.
OpmerkingHet woord 'web' is onjuist hoofdlettergebruik in dit foutbericht.

OpmerkingZie de sectie 'Verwijzingen' van dit artikel voor meer informatie over de uitvoer-cache en de gebruiker besturingselementen.

Oorzaak

Dit probleem treedt op omdat een unieke naam wordt doorgegeven aan deLoadCachedControlfunctie wanneer dynamische besturingselementen worden gemaakt uit de cache. Deze unieke naam is bedoeld om de unieke ID die wordt gegeven aan dit exemplaar van het besturingselement dynamisch geladen. Echter gegenereerde ID wordt gebruikt en de gegenereerde ID is niet uniek voor de besturingselementen dynamisch geladen. Hierdoor is het probleem dat wordt vermeld in de sectie 'Symptomen' van dit artikel.

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
837000De eigenschap PartialCachingControl.CachedControl retourneert altijd een null-verwijzing

Oplossing

BelangrijkDeze hotfix bevat twee typen pakketten: een Microsoft Windows Installer-pakket en een optionele-onderdelenbeheer pakket (OCM). Als u Windows Server 2003, moet u opgeven dat u de update voor Windows Server 2003 (OCM) Bestandsbeveiliging van Windows Server 2003 omdat de.NET Framework 1.1-bestanden. Als u een besturingssysteem uit de Windows Server 2003 verschilt, moet u het Windows Installer-pakket met blijven.

Informatie over software-update

Een ondersteunde hotfix is nu beschikbaar bij Microsoft, maar is alleen bedoeld in dit artikel beschreven probleem op te lossen. Alleen toepassen op systemen waarop dit specifieke probleem. Deze hotfix wellicht extra worden getest. Als u geen ernstige problemen ondervindt, is het daarom raadzaam te wachten op de volgende Microsoft.NET Framework 1.1 Service Pack 1 waarin deze hotfix is opgenomen.

Dit probleem onmiddellijk contact op met Microsoft Product Support Services om de hotfix te verkrijgen. Bezoek de volgende Microsoft-website voor een volledige lijst met telefoonnummers van Microsoft Product Support Services en informatie over ondersteuningskosten:
http://support.Microsoft.com/contactus/?ws=support
OpmerkingIn speciale gevallen kunnen kosten die normaal verbonden worden geannuleerd als een medewerker van Microsoft bepaalt dat een specifieke update de oplossing van uw probleem. De gebruikelijke ondersteuningskosten gelden voor extra ondersteuningsvragen die niet in aanmerking voor de specifieke update in kwestie komen.

Opnieuw opstarten

U moet de computer opnieuw opstarten als alle services of toepassingen die gebruikmaken van bestanden die worden vermeld in de sectie 'Bestandsgegevens' van dit artikel.

Bestandsgegevens

De Engelse versie van deze update heeft de bestandskenmerken (of hoger) die in de volgende tabel worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in coordinated universal time (UTC). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Het verschil tussen UTC en lokale tijd, gebruikt u deTijdzonetabblad in het onderdeel Datum en tijd in het Configuratiescherm.
   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 heeft bevestigd dat dit probleem in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op' van dit artikel is.

Meer informatie

Stappen om het probleem te reproduceren

  1. Maak bijvoorbeeld de map Web, de map \inetpub\wwwrooot\PageCaching te maken.
  2. Gebruik de volgende code maakt een besturingselement met de naam Test1.ascx en sla de webmap die is gemaakt in stap 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. Gebruik de volgende code maakt een besturingselement met de naam Test2.ascx en sla de webmap die is gemaakt in stap 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. Gebruik de volgende code maakt een formulier met de naam PageCaching.aspx en sla de webmap die is gemaakt in stap 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. Ga naar http://localhost/PageCaching/PageCaching.aspx. U ontvangt het foutbericht dat wordt beschreven in de sectie 'Symptomen' van dit artikel.
Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
824684Beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven

Klasse PartialCachingControl

DePartialCachingControlklasse heeft eenCacheControleigenschap. DeCacheControleigenschap kan worden gebruikt om te bepalen als er al een besturingselement zijn opgeslagen. DeCacheControleigenschap retourneert het besturingselement alleen als de uitvoer van de gebruiker controle uitvoer niet is opgeslagen. Als de gebruiker controle uitvoer in de uitvoer-cache bestaat deCacheControleigenschap retourneert een null-verwijzing omdat het besturingselement is nooit gemaakt (in Microsoft Visual Basic deCacheControleigenschap Nothing). Echter, deCacheControleigenschap retourneert altijd FALSE als dePartialCachingControlklasse is niet in de consolestructuur.

Referenties

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
306459ASP.Overzicht van de netto besturingselementen
308378Het fragment in ASP-caching uitvoeren.NET met behulp van Visual C#.NET
308645Het fragment in ASP-caching uitvoeren.NET met Visual Basic.NET

Eigenschappen

Artikel ID: 834608 - Laatste beoordeling: zaterdag 5 maart 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • 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
Trefwoorden: 
kbqfe kbhotfixserver kbfix kbnetframe110presp1fix kbcodegen kbcode kbbug kbmt KB834608 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:834608

Geef ons feedback

 

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