修正: キャッシュされたユーザー コントロールを Webform に動的に追加すると、「複数のコントロールと同じ ID を持つ」エラー メッセージが表示されます。

文書翻訳 文書翻訳
文書番号: 834608
すべて展開する | すべて折りたたむ

目次

現象

キャッシュされたユーザー コントロールを web フォームに動的に追加すると、Web ページを参照するときに、次のようなエラー メッセージが表示されます。
同じ ID '_909b6e15b33' を持つ複数のコントロールが見つかりました。だけは、コントロールに一意の Id があることが必要です。

説明: 現在の web 要求の実行中の未処理の例外が発生しました。詳細については、エラー、コードの発生元のスタック トレースを参照してください。

例外の詳細: System.Web.HttpException: 同じ ID '_909b6e15b33' を持つ複数のコントロールが見つかりました。だけは、コントロールに一意の Id があることが必要です。
メモ このエラー メッセージで単語"web"が誤って資本計上されます。

メモ 出力キャッシュとユーザー コントロールの詳細については、この資料の「関連情報」セクションを参照してください。

原因

この問題を発生する一意の名前が渡されます、 LoadCachedControl キャッシュからダイナミック コントロールを作成するときの関数です。この一意の名前に動的に読み込まれるユーザー コントロールのインスタンスが指定された一意の ID を対象としています。ただしは、生成された ID を使用して、動的に読み込まれるユーザー コントロールでは、生成された ID が一意でないです。この現象は、この資料の「現象」に記載されている問題が発生します。

詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
837000PartialCachingControl.CachedControl プロパティは常に null 参照を返します

解決方法

重要ですこの修正プログラムには 2 種類パッケージにはが含まれています: Microsoft Windows インストーラー パッケージ、および、オプション コンポーネント マネージャー (OCM) のパッケージ。Windows Server 2003 を使用すると、Windows Server 2003 のファイル保護を監視するため、Windows Server 2003 (OCM) 更新プログラムを必要とするように指定する必要がありますは。NET Framework 1.1 ファイルです。別の Windows Server 2003 のオペレーティング システムを使用すると、Windows インストーラー パッケージを使用することを続ける必要があります。

ソフトウェア更新プログラムの情報

サポートされている修正プログラム今すぐ、用意していますが、これだけはこの資料に記載されている問題を修正するものです。この問題が発生しているシステムにのみ適用します。この修正プログラムは、今後さらにテストが表示されます。したがって、この問題で深刻な影響をされていない場合は、次のマイクロソフトのリリースを待つことをお勧めします。NET Framework 1.1 Service Pack は、この修正プログラムが含まれています 1。

この問題を解決するには、Microsoft 製品サポート サービス、修正プログラムを入手するに問い合わせてください。Microsoft 製品サポート サービスの電話番号とサポート コストに関する情報の完全な一覧については、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
メモ Microsoft Support 担当者が特定の更新で問題が解決されると判断した場合は特殊なケースでは、料金が通常のサポート免除されるキャンセルする可能性があります。追加の質問および問題の特定のアップデートの対象とならない問題、通常のサポート料金が適用されます。

再起動の必要性

任意のサービスまたはアプリケーションを実行している場合は、コンピューターを再起動する必要がありますこの資料の「ファイル情報」に記載されているファイルを使用します。

ファイル情報

このソフトウェア更新プログラムの英語版がファイル属性を持つ (またはそれ以降) 次の表に記載されています。日付および時刻これらのファイルを世界協定時刻 (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. Web フォルダー、たとえば、\inetpub\wwwrooot\PageCaching フォルダー作成します。
  2. Test1.ascx、という名前のユーザー コントロールを作成するのには、次のコードを使用し、手順 1 で作成した Web フォルダーに保存します。
    <%@ 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 で作成した Web フォルダーに保存します。
    <%@ 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、という名前の Web フォームを作成するのには、次のコードを使用し、手順 1 で作成した Web フォルダーに保存します。
    <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 を参照します。この資料の「現象」に記載されているエラー メッセージが表示されます。
詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明

PartialCachingControl クラスを使用します。

は、 PartialCachingControl クラスが、 CacheControl [プロパティ] します。は、 CacheControl プロパティは、ユーザー コントロールがキャッシュされているかどうかを判断する使用できます。は、 CacheControl のみ、ユーザー コントロールの出力の出力がキャッシュされていない場合、ユーザー コントロールのプロパティを返します。ユーザー コントロールの出力が出力キャッシュ内に存在する場合は、 CacheControl プロパティ コントロールはインスタンス化されないため、null 参照を返します (マイクロソフトの Visual Basic では、 CacheControl Nothing を返します)。ただし、 CacheControl プロパティを常に返します FALSE 場合は、 PartialCachingControl クラスは、コントロールがコントロール ツリーにではありません。

関連情報

詳細については、マイクロソフト サポート技術記事を表示するのには、次の資料番号をクリックしてください。
306459ASP。NET のサーバー コントロールの概要
308378 ASP での一部だけのキャッシュを実行する方法です。NET の Visual C# を使用します。NET
308645 ASP での一部だけのキャッシュを実行する方法です。NET の Visual Basic を使用します。NET

プロパティ

文書番号: 834608 - 最終更新日: 2011年7月30日 - リビジョン: 6.0
キーワード:?
kbbug kbfix kbqfe kbcodegen kbcode kbnetframe110presp1fix kbhotfixserver kbmt KB834608 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:834608
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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