การแก้ไข: คุณได้รับข้อความแสดงข้อผิดพลาด "หลายตัวควบคุม ด้วย ID เดียว" เมื่อคุณเพิ่มตัวควบคุมผู้ใช้ที่เก็บไว้ชั่วคราวเพื่อ Webforms แบบไดนามิก

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 834608 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อคุณแบบไดนามิกเพิ่มตัวควบคุมผู้ใช้ที่เก็บไว้ชั่วคราว Webform เป็น คุณได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้เมื่อคุณเรียกดูเว็บเพจ:
พบตัวควบคุมหลาย ด้วย ID เดียวกัน '_909b6e15b33' FindControl ต้องการให้ตัวควบคุมมีรหัสที่ไม่ซ้ำกัน

คำอธิบาย: มีข้อยกเว้น unhandled เกิดขึ้นในระหว่างการดำเนินการร้องขอเว็บปัจจุบัน กรุณาตรวจทานสืบค้นกลับแถวสำหรับข้อมูลเพิ่มเติม เกี่ยวกับข้อผิดพลาด และที่ได้ถูกสร้างในรหัส

รายละเอียดของข้อยกเว้น: System.Web.HttpException: พบตัวควบคุมหลาย ด้วย ID เดียวกัน '_909b6e15b33' FindControl ต้องการให้ตัวควบคุมมีรหัสที่ไม่ซ้ำกัน
หมายเหตุ:คำว่า "เว็บ" ถูกบันทึกอย่างไม่ถูกต้องในข้อความแสดงข้อผิดพลาดนี้

หมายเหตุ:สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมผลลัพธ์แคชและผู้ใช้ ให้ดูที่ส่วน "อ้างอิง" ของบทความนี้

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากมีการส่งผ่านไปยังชื่อเฉพาะLoadCachedControlฟังก์ชันเมื่อมีสร้างตัวควบคุมแบบไดนามิกจากแคช ชื่อเฉพาะนี้มีไว้เพื่อให้หมายเลขเฉพาะที่กำหนดให้กับอินสแตนซ์นี้ของตัวควบคุมผู้ใช้ที่ถูกโหลดแบบไดนามิก อย่างไรก็ตาม มีใช้รหัสที่สร้างขึ้น และหมายเลขที่สร้างขึ้นไม่เฉพาะผ่านการควบคุมผู้ใช้ที่ถูกโหลดแบบไดนามิก ลักษณะการทำงานนี้ทำให้เกิดปัญหาที่กล่าวไว้ในส่วน "อาการ" ของบทความนี้

สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
837000คุณสมบัติ PartialCachingControl.CachedControl เสมอส่งกลับค่าการอ้างอิงเป็น null

การแก้ไข

สิ่งสำคัญโปรแกรมแก้ไขด่วนนี้ประกอบด้วยชนิดที่สองของแพคเกจ: แพ็คเกจ Microsoft Windows Installer และแพคเกจตัวจัดการคอมโพเนนต์ที่เลือก (OCM) ถ้าคุณใช้ Windows Server 2003 คุณต้องระบุว่า คุณต้องการให้โปรแกรมปรับปรุงของ Windows Server 2003 (OCM) เนื่องจากการป้องกันแฟ้ม Windows Server 2003 ตรวจสอบแฟ้ม.NET Framework 1.1 ถ้าคุณใช้ระบบปฏิบัติการที่แตกต่างจาก Windows Server 2003 คุณต้องยังคงใช้แพคเกจ Windows Installer

ข้อมูลการปรับปรุงซอฟต์แวร์

สามารถโหลด hotfix ได้แล้วจาก Microsoft แต่มุ่งหวังให้ใช้เพื่อแก้ปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น ใช้ hotfix นี้เฉพาะกับระบบต่างๆ ที่พบปัญหานี้เท่านั้น hotfix นี้อาจได้รับการทดสอบเพิ่มเติม ดังนั้น ถ้าคุณไม่ได้รับอย่างจากจากปัญหานี้ เราขอแนะนำให้ คุณรอรุ่นถัดไป Microsoft .NET Framework 1.1 Service Pack 1 ซึ่งประกอบด้วยโปรแกรมแก้ไขด่วนนี้

การแก้ปัญหานี้ทันที ให้ติดต่อ Microsoft Product Support Services เพื่อรับ hotfix สำหรับรายชื่อทั้งหมดของหมายเลขโทรศัพท์ของ Microsoft Product Support Services และข้อมูลเกี่ยวกับค่าใช้จ่ายในการให้คำปรึกษา แวะไปที่เว็บไซต์ต่อไปนี้ของ Microsoft::
http://support.microsoft.com/contactus/?ws=support
หมายเหตุ:ในกรณีพิเศษ อาจมีการยกเว้นค่าใช้จ่ายสำหรับการสนับสนุนทางโทรศัพท์หากผู้เชี่ยวชาญในการให้การสนับสนุนของ Microsoft ระบุว่าการปรับปรุงเฉพาะจะแก้ปัญหาของคุณได้ ค่าใช้จ่ายปกติจะใช้กับการให้การสนับสนุนสำหรับคำตอบเพิ่มเติมและเรื่องที่ไม่สามารถจัดเป็นคำถามเกี่ยวกับการอัพเดทเฉพาะ

ข้อกำหนดในการเริ่มต้นระบบคอมพิวเตอร์ใหม่

คุณอาจต้องรีสตาร์ทเครื่องคอมพิวเตอร์ของคุณถ้าโปรแกรมประยุกต์หรือบริการกำลังทำงานที่ใช้แฟ้มที่ระบุไว้ในส่วน "ข้อมูลแฟ้ม" ของบทความนี้ได้

ข้อมูลแฟ้ม

การปรับปรุงซอฟต์แวร์นี้รุ่นภาษาอังกฤษมีแอตทริบิวต์ของแฟ้ม (หรืออื่น ๆ) ซึ่งแสดงอยู่ในตารางต่อไปนี้ วันที่และเวลาของแฟ้มเหล่านี้จะปรากฏในรูปแบบเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลแฟ้ม ข้อมูลจะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC กับเวลาท้องถิ่น ใช้โซนเวลาแท็บในเครื่องมือ'วันและเวลา'ใน'แผงควบคุม'
   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

สถานะ

Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ" ของบทความนี้

ข้อมูลเพิ่มเติม

ขั้นตอนในการทบทวนการเกิดปัญหา

  1. สร้างโฟลเดอร์เว็บ ตัวอย่างเช่น การสร้างโฟลเดอร์ \inetpub\wwwrooot\PageCaching
  2. ใช้รหัสดังต่อไปนี้เพื่อสร้างตัวควบคุมผู้ใช้ที่ชื่อ Test1.ascx และบันทึกไปยังเว็บโฟลเดอร์ที่ถูกสร้างขึ้นในขั้นตอนที่ 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. ใช้รหัสดังต่อไปนี้เพื่อสร้างตัวควบคุมผู้ใช้ที่ชื่อ Test2.ascx และบันทึกไปยังเว็บโฟลเดอร์ที่ถูกสร้างขึ้นในขั้นตอนที่ 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. ใช้รหัสดังต่อไปนี้เพื่อสร้างฟอร์มของเว็บที่ชื่อ PageCaching.aspx และบันทึกไปยังเว็บโฟลเดอร์ที่ถูกสร้างขึ้นในขั้นตอนที่ 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 คุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดที่กล่าวถึงในส่วน "อาการ" ของบทความนี้
สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
824684คำอธิบายของคำศัพท์มาตรฐานที่ใช้เพื่ออธิบายปรับปรุงซอฟต์แวร์ของ Microsoft

การใช้คลา PartialCachingControl

กระบวนการPartialCachingControlคลาสที่ได้CacheControlคุณสมบัติ กระบวนการCacheControlคุณสมบัติที่สามารถใช้เพื่อกำหนดว่าถ้าตัวควบคุมผู้ใช้มีอยู่ถูกแคช กระบวนการCacheControlคุณสมบัติส่งกลับค่าการควบคุมผู้ใช้เฉพาะเมื่อไม่มีแคผลลัพธ์ของการแสดงผลของตัวควบคุมผู้ใช้ ถ้ามีการแสดงผลของตัวควบคุมผู้ใช้ที่มีอยู่ในแคชออก ในCacheControlคุณสมบัติส่งกลับการอ้างอิงที่ว่างได้เนื่องจากตัวควบคุมไม่ได้ถูก instantiated (ใน Microsoft Visual Basic,CacheControlคุณสมบัติกลับอะไร) อย่างไรก็ตาม ในCacheControlคุณสมบัติส่งกลับ FALSE เสมอถ้าการPartialCachingControlคลาสที่ไม่อยู่ในแผนภูมิการควบคุม

ข้อมูลอ้างอิง

หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
306459ภาพรวมของตัวควบคุมเซิร์ฟเวอร์ asp.net
308378วิธีการดำเนินการส่วนของการแคใน ASP.NET โดยใช้ Visual .NET c#
308645วิธีการดำเนินการส่วนของการแคใน ASP.NET โดยใช้ Visual Basic .NET

คุณสมบัติ

หมายเลขบทความ (Article ID): 834608 - รีวิวครั้งสุดท้าย: 14 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • 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
Keywords: 
kbqfe kbhotfixserver kbfix kbnetframe110presp1fix kbcodegen kbcode kbbug kbmt KB834608 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:834608

ให้ข้อเสนอแนะ

 

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