.Net في الواقع يقوم بهذا بشكل جيد للغاية بالنسبة لنا. يوفر FCL العديد من الفئات لمساعدتنا في إكمال هذا العمل، مما يجعل عملنا التطويري بسيطًا وسعيدًا للغاية. البرمجة للتحكم في IIS هي في الواقع بسيطة جدًا مثل ASP، يحتاج .Net إلى استخدام ADSI لتشغيل IIS، ولكن في الوقت الحالي لم نعد بحاجة إلى GetObject، لأن .Net يزودنا بأشياء جديدة بوظائف أكثر قوة.
تشتمل مساحة الاسم System.DirectoryServices على بعض الأشياء القوية - DirectoryEntry، وDirectoryEntries، التي تزودنا بوظائف قوية للوصول إلى Active Directory، وتسمح لنا هذه الفئات بتشغيل IIS، وLDAP، وNDS، وWinNT :)
ومع ذلك،
فهي قوية جدًاتحدث عن التحكم في IIS هنا بشكل عام، عندما نقوم بتشغيل IIS، فإننا عادةً ما نقوم بتشغيل الأدلة الافتراضية، لذلك سأدرج هذا باعتباره المحتوى الرئيسي.
بادئ ذي بدء، نحتاج إلى فهم الهيكل الهرمي لـ IIS. فيما يلي صورة وجدتها من الخارج، والتي تشرح الهيكل الهرمي لـ IIS جيدًا:
[htmChina:Image id=Image1|12][/htmChina:Image]
من أجل فهم بناء جملة التحكم في IIS، يجب علينا فهم الشكل أعلاه وفهم البنية الهرمية لبيانات تعريف IIS (قاعدة التعريف). تسمى كل عقدة في الرسم البياني مفتاحًا، ويمكن أن يحتوي كل مفتاح على قيمة واحدة أو أكثر، وهذه القيم هي ما نسميه الخصائص. يتوافق المفتاح في البيانات التعريفية لـ IIS مع العناصر الموجودة في IIS، لذا فإن إعداد البيانات الوصفية هو السمة ستؤثر القيم الموجودة في البيانات على الإعدادات في IIS. هذه هي الفكرة الأساسية وجوهر برامجنا.
وبالإضافة إلى ذلك، تحتاج أيضًا إلى فهم مفهوم المخطط. إنه يمثل اسم البنية في IIS، أي أنه يمكنك فهم نوع المفتاح في بيانات تعريف IIS، وتحديدًا نوع كل عقدة. نحن نعلم أن هناك أدلة افتراضية وأدلة عادية وملفات في IIS، وهذه كلها عناصر من IIS، والتسمية التي تميزها هي Schema. على سبيل المثال، مخطط الدليل الظاهري هو "IIsVirtualDir" والدليل العادي هو "IIsWebDir". بهذه الطريقة، عندما نضيف أدلة أو نحذفها، سيعرف IIS ما إذا كنا نضيف دليلًا ظاهريًا أم دليلاً عاديًا.
يعدإنشاء دليل افتراضي
DirectoryEntry هدية عظيمة تقدمها لنا .Net، ونحن نعرف وظيفتها فقط من خلال اسمها - إدخال الدليل. يعرف أي شخص يستخدم ADSI أنه عند تشغيل IIS وWinNT، نحتاج أيضًا إلى توفير المسار الخاص بهم عند تشغيل IIS، يكون تنسيق هذا المسار هو:
IIS://ComputerName/Service/Website/Directory
ComputerName: أي اسم التشغيل. الخادم يمكن أن يكون الاسم اسمًا أو عنوان IP، والأكثر استخدامًا هو المضيف المحلي.
الخدمة: الخادم الذي يتم تشغيله لديه خدمات ويب وFTP وSMTP في IIS، ونحن نقوم بتشغيل وظيفة الويب الخاصة بـ IIS بشكل أساسي، لذا فإليك "W3SVC" إذا كان FTP، فيجب أن يكون "MSFTPSVC".
موقع الويب: يمكن أن تتضمن خدمة IIS العديد من المواقع. هذا هو الموقع المستخدم لإعداد العمليات. قيمته رقم، الافتراضي هو 1، يشير إلى الموقع الافتراضي، إذا كان هناك آخرون، يبدأ من 1 وهكذا.
الدليل: وغني عن القول، أنه اسم الدليل للتشغيل، الدليل العلوي للموقع بشكل عام هو "ROOT"، والأدلة الأخرى هي أبنائه.
أولاً، نحصل على دليل المستوى الأعلى (الدليل الجذر) للموقع:
DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");
إذا لم يحدث أي استثناء عندما نقوم بإنشاء هذا الكائن، فهذا يعني أن هذا الدليل حقيقي موجود.
لنقم بإضافة دليل ظاهري جديد. على سبيل المثال، نريد إضافة "Aspcn":
DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn", "IIsWebVirtualDir");
newVirDir.Invoc("AppCreate",true);
newVirDir.CommitChanges();
rootfolder.CommitChanges();
فكرة إنشاء دليل بسيطة للغاية، وهي إضافة سجل آخر إلى مجموعة فرعية من الدليل الجذر (rootfolder.Children). يتم هنا استخدام طريقة الإضافة في فئة DirectoryEntries، والتي تُرجع DirectoryEntry الدليل المُضاف حديثًا. إحدى المعلمات هي اسم الدليل الظاهري، والثانية هي اسم فئة المخطط للإشارة إلى نوع الدليل الذي أضفناه. ثم استخدم طريقة استدعاء DirectoryEntry لاستدعاء طريقة "AppCreate" في ADSI لإنشاء الدليل فعليًا (يبدو أنه يمكن إنشاء الدليل بنجاح دون اتخاذ هذه الخطوة، ولكن من أجل السلامة، يجب على الجميع استخدامه)، و أخيرًا اتصل بالجديد، تؤكد طريقة CommitChanges للدليل الجذر هذه العملية.
عند إنشاء دليل جديد، يمكننا أيضًا تعيين قيم لسمات هذا الدليل في نفس الوقت، لكن تجربتي العملية تخبرني أنه من الأفضل عدم القيام بذلك إذا قمنا بتعيين قيم عند إنشاء دليل جديد سيكون هناك العديد من السمات التي لا يمكن تعيينها بنجاح، على سبيل المثال، تمثل السمات المهمة سمة المسار الحقيقية للدليل. لذلك، يوصي Feidao بإنشاء الدليل أولاً ثم تعيين القيم، أي تحديث معلومات الدليل.
قم بتحديث الدليل الظاهري
أعتقد أن الجميع على دراية بـ IIS ويفهمون بعض الإعدادات المهمة في IIS، مثل القابل للقراءة (AccessRead)، والقابل للكتابة (AccessWrite)، والقابل للتنفيذ (AccessExecute)، وما إلى ذلك. يمكن تحقيق ذلك عن طريق تعيين قيم لمجموعة خصائص خصائص DirectoryEntry. يمكن إجراء التعيين بطريقتين:
الأولى هي استدعاء أسلوب الإضافة لمجموعة الخصائص، مثل:
dir.Properties["AccessRead"].Add(true);
والثانية هي تعيين قيمة لقيمة الفهرس الأولى :
dir.Properties["AccessRead"][0] = true
; ذلك يعتمد على تفضيلاتك.
قبل تعيين قيمة، مازلنا بحاجة إلى تحديد الهدف الذي سيتم تعيينه :) هنا نستخدم طريقة البحث الخاصة بفئة DirectoryEntries، مثل:
DirectoryEntry
de = rootfolder.Children.Find("Aspcn", "IIsVirtualDir");
وجدت، ونحن على استعداد للمهمة. تأكد من إلقاء نظرة فاحصة عند تعيين القيم. يمكن أن يكون هناك العديد من قيم السمات في الدليل الظاهري، ويمكنك التحقق من الكثير منها. . : (هناك الكثير منها، ولن أكررها. يمكنك التحقق منها على موقع Microsoft الإلكتروني :)
وأكثرها استخدامًا هي: AccessRead، وAccessWrite، وAccessExecute، وAccessScript، وDefaultDoc، وEnableDefaultDoc،
و
Path الدليل الظاهري أيضًا بسيط جدًا، ما عليك سوى العثور على الدليل الظاهري الذي تريد حذفه، ثم استدعاء طريقة AppDelete.
DirectoryEntry de = rootfolder.Children.Find("Aspcn"،"IIsVirtualDir")؛
de.Invoc("AppDelete",true);
rootfolder.CommitChanges();
هناك طريقة أخرى تتمثل في استدعاء طريقة الحذف للدليل الجذر.
الكائن[] الفقرة = كائن جديد[2]؛
paras[0] = "IIsWebVirtualDir"; // يشير إلى أن العملية عبارة عن دليل ظاهري
paras[1] = "Aspcn";
rootfolder.Invoc("حذف"،الفقرات)؛
rootfolder.CommitChanges();