FIX: Webforms 위해 캐시된 사용자 정의 컨트롤을 동적으로 추가할 때 "여러 컨트롤을 같은 ID 가진" 오류 메시지가 나타날

기술 자료 번역 기술 자료 번역
기술 자료: 834608 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

동적으로 Webform 위해 캐시된 사용자 정의 컨트롤을 추가할 때 웹 페이지를 탐색할 때 다음과 유사한 오류 메시지가 나타날 수 있습니다.
'_909b6e15b33' 같은 ID 가진 여러 개의 컨트롤은 찾을 수 없습니다. FindControl은 컨트롤에 고유한 ID가 있어야 합니다.

설명: 현재 웹 요청 실행하는 동안 있는 처리되지 않은 예외가 발생했습니다. 자세한 오류 및 코드에서 발생한 위치를 스택 추적을 검토하십시오.

예외 정보: System.Web.HttpException: 여러 컨트롤과 동일한 ID '_909b6e15b33' 찾을 수 없습니다. FindControl은 컨트롤에 고유한 ID가 있어야 합니다.
참고 이 오류 메시지에 "웹" 단어는 잘못 대소문자는.

참고 출력 캐싱 및 사용자 컨트롤에 대한 자세한 내용은 이 문서의 "참조" 절을 참조하십시오.

원인

캐시에서 동적 컨트롤을 만들 때 고유한 이름을 LoadCachedControl 함수로 전달되기 때문에 이 문제가 발생합니다. 이 고유 이름은 동적으로 로드된 사용자 정의 컨트롤의 이 인스턴스와 지정된 고유 ID 수 위한 것입니다. 그러나 생성된 ID 사용되며 생성된 ID 간에 동적으로 로드된 사용자 컨트롤을 고유하지 않습니다. 이 문제는 이 문서의 "현상" 절에서 설명한 문제가 발생합니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
837000PartialCachingControl.CachedControl 속성은 항상 null 참조를 반환합니다.

해결 방법

중요한두 가지 유형의 패키지가 이 핫픽스가 포함된: Microsoft Windows Installer 패키지 및 추가 구성 요소 관리자가 패키지 (OCM). Windows Server 2003을 사용하는 경우 Windows Server 2003 파일 보호 .NET Framework 1.1 파일을 모니터링합니다 때문에 Windows Server 2003 (OCM) 업데이트를 필요로 하는 지정해야 합니다. 다른 Windows Server 2003 운영 체제를 사용하는 경우, Windows Installer 패키지를 사용하여 계속 합니다.

소프트웨어 업데이트 정보

지원되는 핫픽스를 이제 Microsoft에서 사용할 수 있지만 이 문서에서 설명하는 문제를 해결하기 위한 것일 뿐입니다. 이러한 특정 문제가 발생하는 시스템에만 적용해야. 이 핫픽스는 나중에 추가 테스트를 받아야 할 수도 있습니다. 따라서 이 문제의 영향이 심각하지 않으면 이 핫픽스가 포함된 다음 Microsoft .NET Framework 1.1 서비스 팩이 1 나올 때까지 기다리는 것이 좋습니다.

이 문제를 즉시 해결하려면 핫픽스를 구하려면 Microsoft 기술 지원 서비스에 문의하십시오. Microsoft 고객기술지원부 전화 번호 및 지원 비용에 대한 정보를 전체 목록은 다음 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 문제는 이 문서의 시작 부분에 나열한 제품에서 문제를 확인했습니다.

추가 정보

문제를 재현하는 방법

  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. 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 수 찾습니다. 이 문서의 "현상" 절에 설명되어 있는 오류 메시지가 나타납니다.
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
824684Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명

PartialCachingControl 클래스 사용

PartialCachingControl 클래스 CacheControl 속성이 있습니다. CacheControl 속성은 사용자 정의 컨트롤을 이미 캐시되었습니다. 경우 결정하는 데 사용할 수 있습니다. 사용자 정의 컨트롤 출력 출력 않는 캐시할 때 CacheControl 속성은 사용자가 컨트롤을 반환합니다. 사용자 정의 컨트롤 출력을 출력 캐시에 있으면 컨트롤 (Microsoft Visual Basic, CacheControl 속성은 Nothing을 반환합니다) 에서 인스턴스화될 때문에 CacheControl 속성은 null 참조를 반환합니다. 하지만 PartialCachingControl 클래스의 컨트롤 트리에 나타나지 않으면 CacheControl 속성은 항상 FALSE 를 반환합니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
306459ASP.NET 서버 컨트롤 개요
308378Visual C# .NET을 사용하여 ASP.NET에서 단편 캐싱을 수행하는 방법
308645Visual Basic .NET을 사용하여 ASP.NET에서 단편 캐싱을 수행하는 방법

속성

기술 자료: 834608 - 마지막 검토: 2006년 4월 7일 금요일 - 수정: 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 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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