سؤال

حسنًا، بدأ هذا يقودني إلى الجنون.لدي تطبيق ويب asp.net.واضحة جدًا، معظم التعليمات البرمجية موجودة في .aspx.vb، وبعض الفئات في App_Code.

المشكلة، التي بدأت تحدث اليوم فقط (على الرغم من أن معظم التعليمات البرمجية قد تمت كتابتها بالفعل)، هي أنه من حين لآخر، تظهر لي رسالة الخطأ هذه:

الخطأ BC30002:لم يتم تعريف النوع "XXX".

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

كل ما علي فعله هو الانتظار قليلاً دون لمس أي شيء، ثم قم بتحديث الصفحة وهي تعمل، ولكنها مزعجة للغاية.

لذلك بحثت قليلاً، ولكن لم يظهر أي شيء باستثناء الواردات المفقودة.اي فكرة ؟

هل كانت مفيدة؟

المحلول 2

أعتقد أنني وجدت المشكلة.

كان الكود الخاص بي هكذا:

Imports CMS

Sub Whatever()
    Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS
    Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util
End Sub

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

وأعدت كتابتها هكذا:

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

والآن يعمل...

نصائح أخرى

يبدو الأمر وكأنه مشكلة ما قبل الترجمة، خاصةً لأنك ذكرت أنك حصلت على الخطأ ثم انتظرت ثم اختفى.قد يكون ASP.NET لا يزال في طور ترجمة التطبيق الخاص بك ديناميكيًا أو أنه قام بتجميع الأنواع في مجموعات مختلفة.

مع التحويل البرمجي الديناميكي، لا نضمن لك تجميع ملفات codebehind مختلفة في نفس التجميع.لذلك قد لا يكون من الممكن حل النوع الذي تشير إليه ضمن تجميعه المترجم مسبقًا.

حاول استخدام التوجيه "@Reference" للإشارة إلى وقت التشغيل أنه يجب تجميع صفحتك والملف الذي يحتوي على النوع الخاص بك في نفس التجميع.

@ المرجع - MSDN

حدث هذا لي بعد أن أضفت مشروعًا جديدًا إلى حل قديم.لقد قمت بتخفيض إطار العمل المستهدف ليتوافق مع إطار المشاريع "الأقدم" الأخرى واختفي الخطأ.

يبدو أن هذا يحدث في كل مرة يتم فيها تشغيل موقع الويب (يتم إعادة تدوير التطبيق في كل مرة تلمس فيها app_code وربما قمت بتكوين IIS لإغلاق موقع الويب بعد X دقيقة من عدم النشاط).

أراهن أن الأمر يتعلق بعدم حصول العملية المنفذة لـ asp.net على حقوق الوصول الصحيحة على الخادم.لذلك تحاول تحميل التجميع ويتم رفضها.

تحقق من هذا الرابط والجدول 19.3 للحصول على قائمة بجميع المجلدات التي يجب أن يكون لحساب العملية المنفذة حق الوصول إليها حتى يعمل.ولا تنس منحه الحقوق لجميع الملفات والمجلدات الموجودة في دليلك الظاهري!

استبدل ملف vbproj وvbproj.user من النسخة الاحتياطية الخاصة بك قبل أن تكون المراجع متساوية

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top