Düzeltme: önbelleğe alınmış kullanıcı denetimlerini Web formlarına için dinamik olarak eklediğinizde bir "Aynı KIMLIĞE sahip birden çok denetim" hata iletisi alıyorsunuz

Makale çevirileri Makale çevirileri
Makale numarası: 834608 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Önbelleğe alınmış kullanıcı denetimlerini bir Webform için dinamik olarak eklediğinizde, Web sayfasına gözattığınızda, aşağıdakine benzer bir hata iletisi alırsınız:
'_909B6e15b33' aynı KIMLIĞE sahip birden çok denetim bulundu. FindControl, denetimler için benzersiz kimlikler olmasını gerektirir.

Açıklama:, Geçerli web isteği yürütülürken işlenmeyen bir özel durum oluştu. Lütfen hata ve kod içinde kaynaklandığı yer hakkında daha fazla bilgi almak için yığın izlemesini gözden geçirin.

Özel durum ayrıntıları: System.Web.HttpException: '_909b6e15b33' aynı KIMLIĞE sahip birden çok denetim bulundu. FindControl, denetimler için benzersiz kimlikler olmasını gerektirir.
Not "Web" sözcüğü, bu hata iletisinde hatalı aktifleştirilir.

Not Çıkış önbellekleme ve kullanıcı denetimleri hakkında daha fazla bilgi için bu makalenin "Başvurular" bölümüne bakın.

Neden

Dinamik denetimler önbellekten oluşturulurken benzersiz bir ad LoadCachedControl işlevine geçirilen bu sorun oluşur. Bu benzersiz bir ad, dinamik olarak yüklenen kullanıcı denetimi örneğine verilen benzersiz bir KIMLIĞI olması amaçlanır. Ancak, oluşturulan bir KIMLIK olarak kullanılır ve dinamik olarak yüklenen kullanıcı denetimleri arasında oluşturulan KIMLIĞI benzersiz değil. Bu davranış bu makalenin "Belirtiler" bölümünde açıklanan soruna neden olur.

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
837000PartialCachingControl.CachedControl özelliği her zaman null bir başvuru verir.

Çözüm

ÖnemliBu düzeltme paketleri iki tür içeriyor: (OCM) bir <a0>isteğe bağlı bileşen Yöneticisi paketi ve Microsoft Windows ınstaller paketi. Windows Server 2003 kullanıyorsanız, Windows Server 2003 Dosya Koruması, .NET Framework 1. 1 dosyaları izler, çünkü, Windows Server 2003'ni (OCM) güncelleştirmenin gerekli olduğunu belirtmeniz gerekir. Windows Server 2003'ten farklı bir işletim sistemi kullanıyorsanız, Windows Yükleyici paketi'ı kullanmayı sürdürmek zorundaysanız.

Yazılım güncelleştirmesi bilgileri

Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, sorundan ciddi olarak bu sorundan ciddi bir şekilde etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki Microsoft .NET Framework 1.1 Service Pack için 1 beklemeniz önerilir.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Yeniden başlatma gereksinimi

Tüm hizmetler ve uygulamalar çalıştırıyorsanız, bilgisayarınızı yeniden başlatmanız gerekebilir, bu makalenin "dosya bilgileri" bölümünde listelenen dosyaları kullanın.

DOSYA BİLGİLERİ

Bu yazılım güncelleştirmesinin ingilizce sürümü dosya öznitelikleri (veya üstü), aşağıdaki tabloda listelenmiştir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   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

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Daha fazla bilgi

Sorunu Yeniden Oluşturma Adımları

  1. Örneğin, Web klasörü oluşturmak için \inetpub\wwwrooot\PageCaching klasörü oluşturun.
  2. Test1.ascx adlı bir kullanıcı denetimi oluşturmak için şu kodu kullanın ve sonra adım 1'de oluşturulan Web klasörüne kaydedin:
    <%@ 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. Test2.ascx adlı bir kullanıcı denetimi oluşturmak için şu kodu kullanın ve sonra adım 1'de oluşturulan Web klasörüne kaydedin:
    <%@ 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. Http://localhost/PageCaching/PageCaching.aspx için göz atın. Bu makalenin "Belirtiler" bölümünde açıklanan hata iletisini alırsınız.
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
824684Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması

PartialCachingControl sınıf'ı kullanma

PartialCachingControl sınıfı, bir CacheControl özelli?i vard?r. CacheControl özellik, bir kullanıcı denetimi zaten önbelleğe, belirlemek için kullanılabilir. CacheControl özellik, yalnızca kullanıcı denetimi çıkış çıkışını değil önbelleğe alındığında kullanıcı denetimi verir. Kullanıcı denetimi çıkış çıkış önbelleğinde varsa, denetimin hiçbir zaman örneği (Visual Basic'te, CacheControl özellik Nothing döndürür Microsoft) çünkü CacheControl özellik boş bir başvuru verir. PartialCachingControl sınıfı denetim konsol ağacında, ancak, CacheControl özellik her zaman YANLıŞ verir.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
306459ASP.NET sunucu denetimleri genel bakış
308378Visual C#. NET'i kullanarak, ASP.NET'te parçası önbellekleme gerçekleştirme
308645Visual Basic. NET'i kullanarak, ASP.NET'te parçası önbellekleme gerçekleştirme

Özellikler

Makale numarası: 834608 - Last Review: 7 Nisan 2006 Cuma - Gözden geçirme: 4.2
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbmt kbqfe kbhotfixserver kbfix kbnetframe110presp1fix kbcodegen kbcode kbbug KB834608 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:834608

Geri Bildirim Ver

 

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