تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعلم كيف تتعامل مع Web.config فى سلسلة دروس
#1
كاتب الموضوع : Ahmed Moosa


بسم الله الرحمن الرحيم
اللهم تجاوز عن سيئات نوايانا وإغفر لنا ما سترت من عيوبنا عن الناس


يا عباد الله
لإن وصلتم بالعلم عنان السماء ووصلتم لمراتب الدنيا العالية و أخذتم من المكانة ما لا يحلم به
فكل هذا هباءاً منثورا إن لم تتقوا الله
والله إنى لست بخيركم ولكن ليت دمعى يكفى على ما أسرفت على نفسى
وإنا لله وإنا إليه راجعون

Web configuration File .

عنوان الدرس ملف تعريفات مبدئية .

ما هو هذا الملف ؟
هو ملف يكتب بلغة Xml سهل القرءاة والضبط به إعدادات الموقع .
و تمتلك ASP.Net ملفين للإعدادات
أحدهما خاص بـ Server وهو Machine.Config
والثانى خاص بالموقع الخاص بك وهو Web.Config.
ولكلا منهما إعداداته الإفتراضية ومعنى إفتراضياً هو :-
" أنك إن لم تقم بضبطه فهو معد مسبقاً دون تدخل منك أى دون أن تكتبه فهو يعمل "
وملف Web.Config كلنا نعرف أنه يضاف مع بداية التشغيل أو أن نضيفة من Add New Item فماذا عن ملف Machine .Config .

وهنا السؤال :
إين أجد ملف Machine .config ؟
والجواب إتبع هذا المسار على جهازك :-
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONF IG
ستجد ملف بإسم Machine.config . قم بسحبة وإلقائه داخل بالبرنامج لتجده بمحتوياته أمامك .

وهنا أيضاً سؤال آخر :-
كيف أعرف الإعدادات الإفتراضية من غيرها سواء فى أى ملف منهم ؟
والجواب إتبع نفس المسار ستجد ملفين وهما :
web.config.default وبه الإعدادت الإفتراضية لملف web.Config .
machine.config.default وبه الإعدادات الإفتراضية لملف Machine.config .


قد رأينا فى الملفات السابقة أوامر وخصائص يتم ضبطها بقيم معينة فكيف لنا أن نعرف قيم هذة الخصائص ؟
أو بمعنى آخر :- كيف لنا أن نحدد ما هى القيمة المناسبة ونوعها لكل خاصية فهل هى String او Integer أو Bool أو غير ذلك ؟
الجواب :- يوجد ملف أيضاً به إعدادات هذة الخواص على شكل تعليق تظهر الخاصية والقيم المتاحة لها سواء ملف Web.Config أو ملف Machine.config .

وإين هذا الملف ؟
الجواب :- تجده فى نفس المسار السابق وتجد ملفين بإسم :
web.config.comments وكذلك machine.config.comments .
وكيف نرى محتويات هذة الملفات ؟
نفس الطريقة قم بسحب الملف وإلقائه داخل البرنامج سواء Visual Studio أو Visual Web Developer

هل هناك ضوابط لكتابة هذة الخصائص ؟
الجواب :- نعم يجب أن نراعى حالة الأحرف وتسمى Case-Sensitive وتكتب أيضاً مبتدئه أول كلمة بحرف صغير ثم ثانى كلمة تبدأ بحرف كبير وتسمى إنجليزياً camelCase .


هل يمكن تكرار كتابة الخاصية أكثر من مرة ؟
الجواب : لا فقط نعرفها مرة واحدة . وهى بدورها يراها كل ملفات الموقع .

هذة الخصائص فهل يمكن أن يكون هناك أكثر من ملف Web.config ؟
الجواب :- نعم وكذلك يمكن ان يحتوى المجلد الداخلى ملف Web.Config خاص بصفحاته ونرى ذلك فى عمل Authentication والمجلدات التى نحجبها عن المستخدمين وبالطبع يراها المديرين أو غير ذلك . وعلى ذلك فيمكن وجود اكثر من ملف كما تشاء .


مع تعدد هذة الملفات ووجود اكثر من ملف Web.Configهنا سؤال :-
أى أعدادات ستطبق ؟ بمعنى آخر : أى ملف Web.Configسيكون له الأولوية فى التنفيذ ؟

الجواب :- حسب الترتيب فى التسلسل .

ماذا يعنى التسلسل وأى تسلسل ؟
الجواب : إنظر لهذا الترتيب ودقق فى الأرقام حسب الترتيب
1- Machine.Config
2- Web.Config العام للموقع .
3- Web.Config الخاص بمجلد فرعى .
4- Web.Config الخاص بمجلد متفرع من المجلد الذى يسبقه
5- وهكذا..................................
ويتم عمل Override للخصائص فى ملف الأب من خلال الملف الأبن منه . إن تم ضبطها . وإن لم يتم ضبط الخصائص سيرث الأبن خصائص الأب . وهنا سؤال :

هل يمكن أن أمنع أن يرث ملف Web.Config الأبن خصائصه من ملف Web.Config الأب ؟
الجواب : نعم بواسطة الأمر allowOverride ونعطيها القيمة Flase . وسنرى إن شاء الله .

ما معنى كلمة Override ؟
نعنى بها هنا وفى البرمجة عامة :- تغطية إعداد سابق بإعداد جديد مختلف . كإعادة تعريف قيمة للخاصية من جديد فى ملف الأبن غير التى فى ملف الأب وهنا سياخذ بالتى فى ملف الأبن لأنه قام بعمل Override أى تغطيه عليها .


رأينا فى نافذة Solution Explorer وكذلك فى قائمة Web Site اداة تسمى ASP.Net Configuration

فهل لها علاقة بهذا الملف ؟
الجواب : نعم هى الواجهة المرئية لهذا الملف أى يمكن أن نضبط إعدادات هذا الملف من خلالها ولكن ليس كل الإعدادات .المتاح فقط . وسنراها إن كان فى العمر بقية إن شاء الله .
بذلك لاحظنا وجود هذة الإعدادات فى الملف ومن خلال هذة الأداة . وهنا سؤال :

هل يمكن أن نضبط هذة الخصائص من اماكن اخرى ؟
الجواب : نعم هناك طريقتين وهما :*
• عن طريق صفحة التصميم Page.aspx وكذلك صفحة الكود Page.aspx.cs .
لكن ليس كل الخصائص فى صفحة التصميم لكن من خلال كود C# أو VBممكن .

وأيضاً سؤال متى يتم ضبط هذة الخصائص ؟
والجواب : قبل نشر الموقع أو بعد من خلال تحرير الملف وكتابة ماتريد بداخله .

فهل يتم تحريره إثنا ء التشغيل أى بواسطة المستخدم مثلاً أو بعملية معينة من خلال الكود ؟
الجواب : نعم إن شاء الله .

رأينا مدى أهمية محتويات هذا الملف فهل يكون كشف هذة المحتويات للمستخدم فيه شئ من الخطر ؟
الجواب :- نعم ولضمان السرية يمكن أن تقوم بعمل encrypt لأى جزء فى الملف .
ما معنى encrypt ؟
الجواب:- فى الترجمات المعهوده تسمى (تشفير) . ولكن خذ هذا التعريف :
" إستبدال المحتويات المفهومة بغيرها يصعب فهما ومثال ذلك كحروف مع أرقام لا تدل على شئ"

وللحديث بقية إن شاء الله .
}}}
تم الشكر بواسطة:
#2
ماذا سأستفيد من ملف web.Config ؟
الجواب :- ضبط إعدادات لصفحات الموقع مرة واحدة يراها كل صفحات الموقع . ويسميها الأخوة الأمريكان "Set And Forget " أى ثبتها وقم بنسيانها . والمقصود من ذلك أى ثبتها فى ملف web.Config واستخدمها فى أى مكان و أكثرمن مرة .


قلنا نستخدمها فأين نستخدمها ؟
الجواب :- نستخدمها من خلال ملفات التصميم أو ملفات الكود وسنرى إن شاء الله .


فيما نستخدمها وهل يمكن أن نأخذ أمثلة ؟
الجواب : نعم هناك مثال بسيط : تثبيت Master Page لكل صفحة يتم من خلال كود التصميم لكل صفحة على حده . ولكن عند إستخدام ملف Web.Config نعرف صفحة Master Page واحده وتستخدمها كل صفحات الموقع .

فماذا إن إحتوى الموقع على أكثر من Master Page ماذا نفعل ؟
الجواب : لا تقلق فهناك أمر داخل web.config يتم من خلاله ضبط إعدادت معينه لصفحة بذاتها أو لمجلد يحتوى على صفحات وبالطبع من ضمن هذة الإعدادات تعريف صفحة Master Page فتحل المشكلة .
هناك أيضاً مثال يستخدمه الكثيرون وهو تخزين نص الإتصال بقاعدة البيانات فى هذا الملف
وبعد ذلك يتم إستدعائه كما يتم إستدعاء أى امر من داخل Web.Config .


كيف يتم إستدعاء هذة الإعدادات من ملف web.Config ؟
الجواب :- يتم هذا من خلال كود التصميم بواسطة Inline Server Tags أو بواسطة كود cs أو Vb .


ما هى Inline Server Tags ؟
تابع هذا الموضوع على هذا الرابط
Inline Server Tagsسلسلة دروس



من أى مدخل ندخل على أعدادات هذا الملف برمجياً أى من خلال vb أو C# ؟
الجواب:- من خلال مكتبة اكواد كما أسميها ويسميها البعض ( فئه و فضاء ) وهما بالفعل إثنتين
ويضافا هكذا
VB

كود :
[color=#000000][COLOR=#0000bb]Imports System[/color][color=#007700].[/color][COLOR=#0000bb]Configuration
Imports System[/COLOR][color=#007700].[/color][color=#0000bb]Web[/color][color=#007700].[/color][COLOR=#0000bb]Configuration  
[/COLOR][/COLOR]

C#

كود :
[color=#000000][COLOR=#0000bb]using System[/color][color=#007700].[/color][color=#0000bb]Configuration[/color][COLOR=#007700];
[/COLOR][color=#0000bb]using System[/color][color=#007700].[/color][color=#0000bb]Web[/color][color=#007700].[/color][color=#0000bb]Configuration[/color][COLOR=#007700];  
[/COLOR][/COLOR]

وإن كنت تستخدم ملف كود vb أو C# داخل كود التصميم فيتم إدراجهم هكذا

كود :
[color=#000000][COLOR=#007700]<%@ [/color][color=#0000bb]Import  Namespace [/color][color=#007700]=[/color][color=#dd0000]"System.Configuration" [/color][COLOR=#007700]%>
<%@ [/COLOR][color=#0000bb]Import Namespace[/color][color=#007700]= [/color][color=#dd0000]"System.Web.Configuration" [/color][COLOR=#007700]%>  
[/COLOR][/COLOR]

هل تعرف أيضاً انه يمكننا إدراج هذة الـ Name Space داخل ملف Web.Config بدلاً من كتابتها فى كل صفحة . ولكن هذا فى وقته سنراه إن شاء الله .
فمن خلالهما سيتم التعامل مع أوامر قراءة وكتابة الإعدادات من وإلى ملف web.Config
}}}
تم الشكر بواسطة:
#3
كفانا تعريفات ماذا يمكن ان يحتوى هذا الملف من إعدادات ؟
الكثير والكثير منها :-
- ضبط إعدادات عامة لكل الصفحاات كـ MasterPage – Theme- NameSpace -
- ضبط نص الإتصال بقاعدة البيانات بأكثر من طريقة .
- ضبط أعدادات Membership وضبط المجموعات وتراخيص الدخول .
- ضبط قاعدة بيانات نستخدمها بدلاً من القاعدة المرفقة الإفتراضية للبرنامج .
- ضبط مشاكل تسجيل الدخول وعملية كلمة المرور ومشاكلها .
- ضبط إعدادات Globalization .
- ضبط صفحة الأعطال وإستخدامها لصالحنا ومعرفة الألوية فى التنفيذ .
- تخصيص إعدادات معينة لصفحات من الموقع أو صفحة واحدة كما تريد .
- ضبط عملية التحميل والتحكم فى إعدادات Upload .
- ضبط بيانات إرسال بريد إلكترونى .
- ضبط الـ Trace وما هيته وما نستفيده منه .
- وغيرها الكثير إن شاء الله نسأله التيسير .
}}}
تم الشكر بواسطة:
#4
قبل أن نبدأ بكتابة الأوامر وإستخدام الملف .
هذا هو أبسط شكل ولاحظ أنه فى إصدار 2005 :-


كود :
[color=#000000][COLOR=#0000bb]<?xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0"[/color][COLOR=#0000bb]?>
[/COLOR]<!--    تعليقاتك    -->
<configuration>
<appSettings/>
<connectionStrings/>
     <system.web>

<!-- تعليقاتك       -->
<compilation debug="true"/>

<authentication mode="Windows"/>

</system.web>
</configuration>[/COLOR]

تحليل هذا الكود


كود :
[color=#000000][COLOR=#0000bb]<?xml version[/color][color=#007700]=[/color][color=#dd0000]"1.0"[/color][color=#0000bb]?>[/color] [/COLOR]

هنا عرفنا المستند انه من نوع Xml وكذلك تعريف الاصدار

كود :
[color=#000000][COLOR=#007700]<!--    [/color][color=#0000bb]تعليقاتك    [/color][COLOR=#007700]-->  
[/COLOR][/COLOR]

هذا العلامات يكتب بداخلها تعليقاتك لإرشادك أو غيرك لطريقة سير الكود داخل الملف

كود :
[color=#000000][COLOR=#007700]<[/color][color=#0000bb]configuration[/color][COLOR=#007700]>  
[/COLOR][/COLOR]

وهنا ضالتنا وهى ما نريد وستحتوى على كل الإعدادات التى سنتعامل معها طوال الدرس إن شاء الله .

كود :
[color=#000000][COLOR=#007700]<[/color][color=#0000bb]appSettings[/color][COLOR=#007700]/>
<[/COLOR][color=#0000bb]connectionStrings[/color][COLOR=#007700]/>
     <[/COLOR][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]web[/color][COLOR=#007700]>
<[/COLOR][color=#0000bb]compilation debug[/color][color=#007700]=[/color][color=#dd0000]"true"[/color][COLOR=#007700]/>
<[/COLOR][color=#0000bb]authentication mode[/color][color=#007700]=[/color][color=#dd0000]"Windows"[/color][COLOR=#007700]/>
</[/COLOR][color=#0000bb]system[/color][color=#007700].[/color][color=#0000bb]web[/color][COLOR=#007700]>  
[/COLOR][/COLOR]

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

كود :
[color=#000000][COLOR=#007700]<[/color][color=#0000bb]configuration[/color][COLOR=#007700]>

</[/COLOR][color=#0000bb]configuration[/color][COLOR=#007700]>  
[/COLOR][/COLOR]

ماذا عن 2008 ؟
تجد به ما ذكرنا بالسابق ولكن يزيد بعض الأوامر فيما يخص Ajax وغيرها .
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم