ملخص لعدة مشكلات في ترقية ASP.NET 1.0 إلى ASP.NET 2.0
الكاتب:Eve Cole
وقت التحديث:2009-06-30 16:06:42
لقد قمت بترقية المشروع الأصلي 1.1 في الأيام القليلة الماضية ووجدت بعض المشكلات وسألخصها هنا وأذكر الأصدقاء الذين لم يكن لديهم الوقت للترقية أو المستعدين للترقية لتجنب الانعطافات وإضاعة الوقت أثناء عملية الترقية.
1. يختلف نموذج معالجة ملف Global.asax، وستحدث أخطاء بعد التحويل. في vs2003، يحتوي Global.asax على ملف لاحق للتعليمات البرمجية ضمن الإصدار 2.0، يتم نقل ملف فصل التعليمات البرمجية إلى دليل App_Code بحيث يمكن أن يصبح ملفًا تلقائيًا الوصول إلى أي صفحة ASP.NET في البرنامج. ستتم إزالة السمة "Code-behind" من التوجيهات الموجودة في ملفات ASAX. يكتب vs2005 التعليمات البرمجية مباشرة في Global.asax. لذلك، تحتاج إلى حذف الملفات المحولة وإعادة إضافتها ونسخ الكود المقابل.
لا يوجد ملف المشروع في 2.2.0. في تطبيق 1.1، يحتوي ملف المشروع على إعدادات البناء ومراجع التجميعات الخارجية وقائمة الملفات الموجودة في المشروع. في تطبيقات الإصدار 2.0، لم تعد هناك حاجة إلى إعدادات الإصدار وقوائم الملفات لأن كافة الملفات الموجودة في دليل مشروع الويب تعتبر جزءًا من مشروع الويب.
3. وضع فصل الكود.
في ASP.NET 1.1، يقوم وضع فصل التعليمات البرمجية بفصل المحتوى (مثل test.aspx) عن التعليمات البرمجية (مثل test.aspx.cs). ترث صفحات المحتوى من الصفحات المفصولة بالأكواد، والتي تحتوي على أكواد برمجية أنشأها المستخدم والمصمم.
يعمل ASP.NET 2.0 على تحسين وضع فصل التعليمات البرمجية من خلال استخدام الفئات الجزئية، وذلك باستخدام الكلمة الأساسية الجزئية لفصل التعليمات البرمجية الخاصة بفئة واحدة إلى ملفين منفصلين. يسمح للفئة بتوسيع ملفات متعددة. في الوضع الجديد المفصول بالرمز، ترث صفحة المحتوى من الفئة المترجمة، والتي تتكون من الصفحة المفصولة بالرمز المقابلة وملف كعب الروتين الذي تم إنشاؤه تلقائيًا والذي يحدد إعلانات الحقول لعناصر التحكم المستخدمة في صفحة المحتوى. يفصل هذا التغيير التعليمات البرمجية التي تم إنشاؤها تلقائيًا عن التعليمات البرمجية الخاصة بالمستخدم ويجعل صفحة فصل التعليمات البرمجية أصغر حجمًا وأكثر نظافة بشكل ملحوظ. تقلل بنية الفئة الجزئية أيضًا من خطر كسر الصفحة عن طريق الخطأ عن طريق تحرير التعليمات البرمجية التي أنشأها المصمم.
في حالة حدوث خطأ، تحقق مما إذا كانت هناك كلمة أساسية جزئية، وإلا قم بإضافة الكلمة الأساسية الجزئية.
4. التدقيق النحوي. لن يتحقق برنامج asp.net1.1 من أخطاء بناء الجملة في aspx وaspcx والملفات الأخرى عند التجميع، بينما سيتحقق vs2005 من بناء الجملة في جميع aspx وaspcx وملفات أخرى في المشروع عند التجميع، لذلك إذا كانت هناك أخطاء في بناء الجملة، سوف يسبب التجميع غير قادر على المرور.
5. إعلان التحكم. إذا تم تعريف كافة عناصر التحكم على صفحة .aspx، فاحذف كافة تعريفات عناصر التحكم من ملف فصل التعليمات البرمجية، وإلا سيتم الإعلام عن خطأ: تعريف مكرر.
6. (C# فقط) انقل رمز ربط الحدث من الدالةInitialzeComponent في ملف تقسيم التعليمات البرمجية إلى صفحة .aspx. لاحظ أن هذا الإجراء لا ينطبق على الأحداث التي يتم استدعاؤها تلقائيًا، بما في ذلك Page_Init وPage_Load وPage_DataBind وPage_PreRender وPage_Unload وPage_Error وPage_AbortTransaction وPage_CommitTransaction.
7. طريقة النشر (مترجمة مسبقًا، مجمعة بالكامل، موقع قابل للتحديث، وما إلى ذلك). في الإصدار 1.x، تم تجميع تطبيقات الويب مسبقًا ونشرها كمجموعة واحدة كبيرة. لا يتم تجميع صفحات المحتوى (*.aspx) على الخادم، ولكن يمكن تحريرها على الخادم. باستخدام وضع تجميع الصفحات الجديد وبنية الدليل، يمكنك استخدام مجموعة متنوعة من التكوينات المختلفة لنشر تطبيقات ASP.NET 2.0. في إحدى الحالات، يمكنك ترجمة كافة صفحات ASPX مسبقًا ونشر تطبيق ويب يتكون من تجميعات مجمعة بالكامل. في هذا الوضع، لا يمكنك تغيير التطبيق الموجود على الخادم بسهولة. وبدلاً من ذلك، يمكنك نشر التطبيق الخاص بك دون ترجمة أي تعليمات برمجية مسبقًا. في هذا التكوين، يمكنك تغيير صفحات aspx. أو الملفات المنفصلة للتعليمات البرمجية أو أي تعليمات برمجية أخرى في التطبيق مباشرة على الخادم. عندما يطلب مستخدم صفحة على الخادم، يتم تجميع الصفحة ديناميكيًا.
8. قم بتغيير كافة خصائص CodeBehind في صفحة .aspx إلى خصائص CodeFile
CodeBehind: يحدد اسم الملف المترجم الذي يحتوي على الفئات المرتبطة بالصفحة. لا يمكن استخدام هذه الخاصية في وقت التشغيل.
يتم توفير هذه الخاصية للتوافق مع الإصدارات السابقة من ASP.NET لتنفيذ وظيفة التعليمات البرمجية الخلفية. في ASP.NET الإصدار 2.0، يجب عليك بدلاً من ذلك استخدام الخاصية CodeFile لتحديد اسم الملف المصدر، والخاصية Inherits لتحديد الاسم المؤهل بالكامل للفئة.
ملف كودي
يحدد المسار إلى الملف الموجود خلف الكود المشار إليه بواسطة الصفحة. يتم استخدام هذه الخاصية مع خاصية Inherits لربط ملف المصدر الموجود خلف التعليمات البرمجية بصفحة ويب. هذه الخاصية صالحة فقط للصفحات المجمعة.
9. انقل كافة ملفات التعليمات البرمجية المستقلة و AssemblyInfo.cs إلى دليل App_Code.
ومع ذلك، بعد تشغيل معالج التحويل، قد تجد أن بعض ملفات فصل التعليمات البرمجية (على سبيل المثال، *.aspx.cs أو *.ascx.vb) قد تم نقلها إلى دليل App_Code. يشير هذا إلى أن صفحة المحتوى الخاصة بملف تقسيم التعليمات البرمجية تحتوي على توجيه Codebehind تالف ولم يتم إعداده بشكل صحيح. بمعنى، لا يمكن لمعالج التحويل تحديد ما إذا كان ملف تقسيم التعليمات البرمجية مرتبطًا بالفعل بصفحة .aspx محددة.
10. خدمات الويب في ASP.NET 1.x، يتم تقسيم خدمات الويب (.asmx) تلقائيًا إلى صفحة رأس فارغة (.asmx) وملف مفصول بالكود يحتوي على الطرق الفعلية.
ضمن Asp.net2.0:
• انقل فئة فصل التعليمات البرمجية إلى دليل App_Code بحيث يمكن الوصول إليها تلقائيًا من أي صفحة ASP.NET في التطبيق.
قم بتغيير الخاصية CodeBehind في الملف .asmx للإشارة إلى الموقع الجديد.
(لاحظ أن الملفات المفصولة بتعليمات برمجية لا تستخدم الفئات المحلية، لذلك يستمر استخدام سمة CodeBehind.)
• تغيير كافة إعلانات النطاق الافتراضي والصديق والداخلي إلى عام.
ما نوع المشاكل التي واجهتها أثناء عملية الترقية من 1.1 إلى 2.0؟ يمكنك تدوينها حتى يتمكن الجميع من التعلم معًا وتجنب الانعطافات.