بنية التكوين
تسمى ملفات تكوين ASP.NET بملفات Web.config، ويمكن أن تظهر في دلائل متعددة داخل تطبيق ASP.NET. يتميز التسلسل الهرمي لتكوين ASP.NET بالخصائص التالية:
استخدم ملف تكوين ينطبق على الموارد الموجودة في الدليل الذي يوجد به ملف التكوين وجميع الدلائل الفرعية الخاصة به.
يسمح لك بوضع بيانات التكوين في موقع يمنحها النطاق المناسب (الكمبيوتر بأكمله، أو كافة تطبيقات الويب، أو تطبيق واحد، أو دليل فرعي داخل هذا التطبيق).
يسمح بتجاوز إعدادات التكوين الموروثة من المستويات الأعلى في التسلسل الهرمي للتكوين. يسمح أيضًا بقفل إعدادات التكوين لمنع الكتابة فوقها بواسطة إعدادات التكوين ذات المستوى الأدنى.
تنظيم المجموعات المنطقية لإعدادات التكوين في أقسام.
وراثة التكوين
ترث كافة تطبيقات .NET Framework إعدادات التكوين الأساسية والإعدادات الافتراضية من ملف يسمى systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config. يتم استخدام ملف Machine.config لإعدادات التكوين على مستوى الخادم. لا يمكن تجاوز بعض هذه الإعدادات في ملفات التكوين الموجودة في أسفل التسلسل الهرمي.
تستخدم تطبيقات عميل .NET (وحدة التحكم وتطبيقات Windows) ملف تكوين يسمى ApplicationName.config لتجاوز الإعدادات الموروثة. تستخدم تطبيقات ASP.NET ملف تكوين يسمى Web.config لتجاوز الإعدادات الموروثة.
جذر التسلسل الهرمي لتكوين ASP.NET هو ملف يسمى ملف Web.config الجذر، والذي يقع في نفس الدليل مثل ملف Machine.config. يرث ملف Web.config الجذر كافة الإعدادات من ملف Machine.config. يحتوي ملف Web.config الجذر على الإعدادات التي تنطبق على كافة تطبيقات ASP.NET التي تقوم بتشغيل إصدار محدد من .NET Framework. نظرًا لأن كل تطبيق ASP.NET يرث إعدادات التكوين الافتراضية من ملف Web.config الجذر، فإنك تحتاج فقط إلى إنشاء ملفات Web.config للإعدادات التي تتجاوز الإعدادات الافتراضية.
الوراثة في عناصر المجموعة
بعض عناصر التكوين عبارة عن مجموعات، على سبيل المثال، عنصر مساحات الأسماء وعنصر customErrors.
في المجموعة، تتم عادةً إضافة إعدادات التكوين إلى المجموعة من خلال عنصر الإضافة الفرعي، أو إزالتها حسب اسم المفتاح من خلال العنصر الفرعي الإزالة، أو يمكن مسح المجموعة بأكملها من خلال العنصر الفرعي الواضح. ما لم يتم السماح بالتكرارات، فإن الإعدادات المضافة في ملف تعريف الطفل ستتجاوز الإعدادات التي تحمل نفس اسم المفتاح في ملف تعريف الأصل.
لاحظ
أن بعض المجموعات التي كانت موجودة في الإصدارات السابقة من .NET Framework استخدمت أسماء عناصر مختلفة لإضافة عناصر فرعية. على سبيل المثال، يستخدم عنصر customErrors العنصر الفرعي للخطأ لإضافة أخطاء مخصصة إلى المجموعة.
إذا تم تلقي طلب لملف غير موجود في الدليل SubDir1، فسيبدأ ASP.NET في البحث في التسلسل الهرمي للتكوين ويبدأ من ملف Web.config الأكثر محلية (إذا كان موجودًا، فقد يكون موجودًا في الدليل الحالي أو قد يكون موجودًا). قد يكون في الدليل الحالي). سيبحث ASP.NET في عنصر الخطأ (مخطط إعدادات ASP.NET) الخاص بـ customErrors عن سمة رمز الحالة التي تساوي "404". بمجرد عثور ASP.NET على خطأ 404 في إعدادات التكوين، يتم إرجاع عنوان URL الموجود في سمة إعادة التوجيه كاستجابة.
نطاق إعدادات التكوين
تحتوي إعدادات التكوين على نطاقات مختلفة - بعضها له نطاق عام والبعض الآخر صالح فقط لنطاق التطبيق (ملف Web.config الجذر أو ملف Machine.config).
يتم تعريف نطاق قسم التكوين لجميع الأقسام الموجودة في ASP.NET في سمةallowDefinition لعنصر عنصر قسم configSections (مخطط الإعدادات العامة) في ملف Machine.config. على سبيل المثال، يحتوي عنصر عنصر المصادقة (مخطط إعدادات ASP.NET) على السمة المسموح بها للعنصر MachineToApplication. وهذا يعني أنه يمكن تعيين عنصر المصادقة في ملف Machine.config على مستوى التطبيق، وملف Web.config الجذر، وملف Web.config. إذا تم تعيينه على مستوى الدليل الفرعي، فسيتم طرح خطأ. إذا لم يتم تعريف سمةallowDefinition لقسم ما، فستكون القيمة الافتراضية هي Everywhere.
يتم إدراج نطاق إعدادات التكوين لكل عنصر في إعدادات تكوين ASP.NET وإعدادات التكوين العامة (ASP.NET) بجوار قابل للتكوين في جدول معلومات العنصر.
يسرد الجدول التالي مستوى كل ملف في التسلسل الهرمي للتكوين، واسم كل ملف، ووصفًا للخصائص الموروثة المهمة لكل ملف.
مستوى التكوين | اسم الملف | وصف الملف |
Server | Machine.config | يحتوي ملف Machine.config على مخطط ASP.NET لكافة تطبيقات الويب الموجودة على الخادم. يوجد هذا الملف في المستوى الأعلى من التسلسل الهرمي لدمج التكوين. |
Web.config | الجذر | في نفس الدليل مثل ملف Machine.config ويحتوي على القيم الافتراضية لمعظم قسم تكوين system.web. في وقت التشغيل، يتم دمج هذا الملف من المستوى الثاني من الأعلى في التسلسل الهرمي للتكوين. |
Site | Web.config | يحتوي ملف Web.config الخاص بموقع معين على إعدادات تنطبق على هذا الموقع ويتم توريثها إلى كافة تطبيقات ASP.NET والدلائل الفرعية لذلك الموقع. |
ASP.NET جذر تطبيق | Web.config | يوجد ملف Web.config الخاص بتطبيق ASP.NET محدد في الدليل الجذر للتطبيق، وهو يحتوي على الإعداد. |
دليل فرعي لتطبيق ASP.NET | Web.config | يحتوي ملف Web.config الخاص بدليل فرعي للتطبيق على إعدادات تنطبق على هذا الدليل الفرعي ويتم توريثها إلى كافة الدلائل الفرعية في فروعها. |
دليل تطبيق العميل | ApplicationName.config | يحتوي الملف TheApplicationName.config على إعدادات تطبيقات عميل Windows (وليس تطبيقات الويب). |
عنصر ProcessModel
يقوم عنصر ProcessModel (مخطط إعدادات ASP.NET) بتكوين نموذج المعالجة المستخدم للخادم (بما في ذلك جميع تطبيقات ASP.NET على الخادم). لذلك، يمكن وضع إعدادات ProcessModel فقط في ملف Machine.config ولا يمكن تجاوزها بواسطة الإعدادات الموجودة في أي ملف Web.config.
لن تصبح التغييرات التي يتم إجراؤها على عنصر ProcessModel نافذة المفعول إلا بعد إعادة تشغيل العملية المنفذة، وليس مباشرة بعد تعيين التغييرات مثل عناصر التكوين الأخرى.
ملاحظة:
عند تشغيل ASP.NET في خدمات معلومات الإنترنت (IIS) 6.0 في وضع عزل العملية المنفذة، يتم استخدام نموذج عملية IIS 6.0 ويتم تجاهل الإعداد الموجود في قسم ProcessModel في ملف Machine.config. لتكوين هوية العملية أو round-robin أو قيم نموذج العملية الأخرى، استخدم IIS Manager لتكوين عملية IIS المنفذة للتطبيق.
حساب إعدادات التكوين أثناء التشغيل
عندما يتلقى الخادم طلبًا لمورد ويب معين، يقوم ASP.NET بحساب إعدادات التكوين لهذا المورد بشكل هرمي باستخدام كافة ملفات التكوين الموجودة في مسار الدليل الظاهري لعنوان URL المطلوب. تتجاوز إعدادات التكوين المحلية الإعدادات الموجودة في ملف التكوين الأصلي.
يتم حساب هذه الإعدادات مرة واحدة ثم يتم تخزينها مؤقتًا للطلبات اللاحقة. يقوم ASP.NET تلقائيًا بمراقبة التغييرات التي تطرأ على الملف ويعيد حساب ذاكرة التخزين المؤقت عند تغيير أي ملف تكوين داخل التسلسل الهرمي للملف. عندما يتلقى الخادم طلبًا لعنوان URL محدد، يستخدم ASP.NET التسلسل الهرمي لإعدادات التكوين في ذاكرة التخزين المؤقت للعثور على المورد المطلوب.
ما لم يتم تضمين سمة RestartOnExternalChanges = "false" في عنصر قسم التكوين، أو ما لم يتم تضمين إعدادات التكوين في ملف منفصل مرتبط بملف Web.config باستخدام سمة configSource، سيتم إعادة تشغيل التطبيق عندما يتغير التكوين.
موارد ASP.NET متعددة تم تكوينها في ملف واحد
يمكن أن يكون تخزين الإعدادات لمواقع متعددة في ملف Web.config واحد مفيدًا عند إدارة عدد كبير من إعدادات التكوين أو إدارة مواقع ويب العميل في إعداد ISP. باستخدام سمة المسار لعنصر الموقع، يمكنك تكوين عدة موارد ASP.NET محددة مخزنة في الدليل الفرعي للتطبيق.
للحصول على معلومات حول كيفية استخدام عنصر الموقع، راجع كيفية: تكوين دليل محدد باستخدام إعدادات الموقع.
تتعارض الإعدادات الموجودة في الدلائل الظاهرية مع الإعدادات الموجودة في الدلائل الفعلية.
إعدادات تكوين الدلائل الظاهرية مستقلة عن بنية الدليل الفعلي، ويجب تنظيم الدلائل الظاهرية بعناية لمنع حدوث مشكلات في التكوين. على سبيل المثال، قد يكون لديك ملف ASP.NET يُسمى MyResource.aspx ببنية الدليل الفعلي التالية.
C:
Subdir1
Subdir2
MyResource.aspx
بالإضافة إلى ذلك، قد يكون لديك ملف تكوين موجود في Subdir1، ودليل ظاهري يسمى Vdir1 تم تعيينه إلى c:Subdir1، ودليل ظاهري يسمى Vdir1 تم تعيينه إلى c:Subdir1Subdir2 الظاهري دليل Vdir2. إذا كان العميل يستخدم عنوان URL http://localhost/vdir1/subdir2/MyResource.aspx للوصول إلى مورد موجود فعليًا في c:Subdir1Subdir2MyResource.aspx، فإن المورد يرث إعدادات التكوين من Vdir1. ومع ذلك، إذا قام العميل بالوصول إلى نفس المورد باستخدام عنوان URL http://localhost/vdir2/MyResource.aspx، فلن يرث المورد الإعدادات من Vdir1. قد يؤدي إنشاء الدلائل الافتراضية بهذه الطريقة إلى نتائج غير متوقعة أو حتى يؤدي إلى فشل التطبيق. من المستحسن عدم تداخل الدلائل الظاهرية، وإذا كان يجب عليك استخدام ملف Web.config واحد فقط.
الحد من توريث ASP.NET
قد ترغب في تقييد توريث إعدادات التكوين لتحسين أداء التطبيق والحفاظ على الموثوقية العالية وتبسيط الإدارة. يتم التحكم في وظيفة التقييد من خلال خصائصallowOverride، وlockAttributes، وlockAllAttributesExcept، وlockAllElementsExcept، وlockItem، وlockElements. راجع msdn لمزيد من المعلومات حول هذه الخصائص.