تصحيح: ظهور رسالة خطأ "عناصر تحكم متعددة له نفس المعرف" عند إضافة عناصر تحكم المستخدم المخزنة مؤقتاً بشكل حيوي إلى Webforms

الأعراض

عند إضافة عناصر تحكم المستخدم المخزنة مؤقتاً بشكل حيوي Webform، تتلقى رسالة خطأ مشابهة للرسالة التالية عند استعراض صفحة ويب:
تم العثور على عناصر تحكم متعددة له نفس المعرف '_909b6e15b33'. يتطلب فيندكونترول أن عناصر التحكم معرفات فريدة.


الوصف: حدث استثناء لم تتم معالجته أثناء تنفيذ طلب ويب الحالي. الرجاء مراجعة تتبع المكدس لمزيد من المعلومات حول الخطأ ومكان حدوثه في التعليمات البرمجية.



تفاصيل الاستثناء: System.Web.HttpException: تم العثور على عناصر تحكم متعددة له نفس المعرف '_909b6e15b33'. يتطلب فيندكونترول أن عناصر التحكم معرفات فريدة.
ملاحظة: يتم تكبير الكلمة "ويب" بشكل غير صحيح في رسالة الخطأ هذه.

ملاحظة: لمزيد من المعلومات حول عناصر تحكم المستخدم والتخزين المؤقت للإخراج، راجع قسم "المراجع" من هذه المقالة.

السبب

تحدث هذه المشكلة لأنه يتم تمرير اسم فريد للدالة لوادكاتشيدكونترول عند إنشاء عناصر التحكم الحيوي من ذاكرة التخزين المؤقت. هذا الاسم فريد المقصود أن يكون المعرف الفريد الذي يرد إلى هذا المثيل من صواب تحميله ديناميكياً. ومع ذلك، يتم استخدام معرف تم إنشاؤه والمعرف المولد غير فريد عبر عناصر تحكم المستخدم التي تم تحميلها بشكل حيوي. يؤدي هذا السلوك المشكلة المذكورة في قسم "الأعراض" من هذه المقالة.

للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

837000 PartialCachingControl.CachedControl الخاصية دوماً بإرجاع مرجع فارغ

الحل

هام: يحتوي هذا الإصلاح العاجل نوعين من حزم: حزمة Microsoft Windows Installer وحزمة إدارة المكونات الاختيارية (OCM). إذا كنت تستخدم Windows Server 2003، يجب تحديد أن تطالب بتحديث Windows Server 2003 (OCM)، لمراقبة حماية ملفات ل Windows Server 2003 ملفات.NET Framework 1.1. إذا كنت تستخدم نظام تشغيل مختلف من Windows Server 2003، يجب الاستمرار في استخدام حزمة Windows Installer.

معلومات تحديث البرامج

يتوفر الآن إصلاح عاجل معتمد من Microsoft، ولكن الغرض منه هو حل المشكلة الموضحة في هذه المقالة فقط. فقط تطبيقه على الأنظمة التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح العاجل. لذلك، إذا لم يكن تأثير المشكلة كبيرا، نوصي بالانتظار حتى التالي Microsoft.NET Framework 1.1 من حزمة الخدمة 1 الذي يحتوي على هذا الإصلاح العاجل.

لحل هذه المشكلة فورا، اتصل بخدمات دعم منتجات Microsoft للحصول على الإصلاح العاجل. للحصول على قائمة كاملة من أرقام هواتف خدمات دعم المنتجات في Microsoft وعلى معلومات حول تكاليف الدعم، الرجاء زيارة موقع Microsoft التالي على الويب:ملاحظة: في بعض الحالات، قد يتم إلغاء المصروفات التي تحتسب عادة على مكالمات الدعم إذا قرر أخصائي الدعم لدى Microsoft أن تحديثًا معيناً سوف يعمل على حل المشكلة. سيتم اضافة تكاليف الدعم المعتادة على أسئلة الدعم الإضافية والمشاكل التي لا يأهل على حلها للتحديث المطلوب.

متطلبات إعادة التشغيل

قد تضطر إلى إعادة تشغيل جهاز الكمبيوتر إذا كان أي خدمات أو تطبيقات قيد التشغيل التي تستخدم الملفات المسردة في القسم "معلومات الملف" من هذه المقالة.

معلومات الملف

يحتوي إصدار اللغة الإنجليزية من تحديث البرنامج هذا على سمات الملف (أو الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي المتفق عليه (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

استخدام فئة بارتيالكاتشينجكونترول

فئة بارتيالكاتشينجكونترول على خاصية كاتشيكونترول . يمكن استخدام الخاصية كاتشيكونترول لتحديد إذا كان عنصر تحكم مستخدم مسبقاً مؤقتاً. إرجاع خاصية كاتشيكونترول عنصر تحكم المستخدم فقط عند إخراج مخرجات عنصر تحكم المستخدم غير مخزنة مؤقتاً. في حالة وجود إخراج عنصر تحكم المستخدم في المخزن المؤقت للإخراج، كاتشيكونترول الخاصية بإرجاع مرجع فارغ لأنه لم يتم إنشاء مثيل عنصر التحكم (في Microsoft Visual Basic، الخاصية كاتشيكونترول إرجاع أي شيء). ومع ذلك، الخاصية كاتشيكونترول دوماً بإرجاع FALSE إذا لم تكن الفئة بارتيالكاتشينجكونترول في شجرة عناصر التحكم.

المراجع

للحصول على معلومات إضافية، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

نظرة عامة حول عناصر تحكم خادم ASP.NET 306459

كيفية تنفيذ الجزء التخزين المؤقت في ASP.NET باستخدام Visual C#.NET 308378

كيفية تنفيذ الجزء التخزين المؤقت في ASP.NET باستخدام Visual Basic.NET 308645

خصائص

رقم الموضوع: 834608 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات