.Net sebenarnya melakukan hal ini dengan sangat baik bagi kami. FCL menyediakan banyak kelas untuk membantu kami menyelesaikan pekerjaan ini, membuat pekerjaan pengembangan kami menjadi sangat sederhana dan menyenangkan. Pemrograman untuk mengontrol IIS sebenarnya sangat sederhana. Seperti ASP, .Net perlu menggunakan ADSI untuk mengoperasikan IIS, namun saat ini kita tidak lagi memerlukan GetObject, karena .Net memberi kita hal-hal baru dengan fungsi yang lebih canggih.
yang
memberi kita fungsi yang kuat untuk mengakses Active Directory. Kelas-kelas ini memungkinkan kita untuk mengoperasikan IIS, LDAP, NDS dan WinNT
berbicara tentang kontrol IIS di sini. Secara umum, ketika kami mengoperasikan IIS, kami biasanya mengoperasikan direktori virtual, jadi saya akan mencantumkan ini sebagai konten utama.
Pertama-tama, kita perlu memahami struktur hierarki IIS. Berikut ini adalah gambar yang saya temukan dari luar negeri, yang menjelaskan struktur hierarki IIS dengan sangat baik:
[htmChina:Image id=Image1|12][/htmChina:Image]
Untuk memahami sintaks kontrol IIS, kita harus memahami gambar di atas dan memahami struktur hierarki metadata IIS (Metabase). Setiap node dalam grafik disebut Kunci, dan setiap Kunci dapat berisi satu atau lebih nilai. Nilai-nilai inilah yang kita sebut properti. Kunci dalam metadata IIS konsisten dengan elemen di IIS, sehingga metadata Pengaturan atribut nilai dalam data akan mempengaruhi pengaturan di IIS. Ini adalah ide dasar dan inti dari pemrograman kami.
Selain itu, Anda juga perlu memahami konsep Skema. Ini mewakili nama arsitektur di IIS, yaitu, Anda dapat memahami jenis Kunci dalam metadata IIS, khususnya jenis setiap node. Kita tahu bahwa ada direktori virtual, direktori biasa, dan file di IIS, dan ini semua adalah elemen IIS, dan label yang membedakannya adalah Skema. Misalnya, Skema direktori virtual adalah "IIsVirtualDir" dan direktori normal adalah "IIsWebDir". Dengan cara ini, ketika kita menambah atau menghapus direktori, IIS akan mengetahui apakah kita menambahkan direktori virtual atau direktori normal.
Membuat direktori virtual
DirectoryEntry adalah hadiah luar biasa yang diberikan .Net kepada kita. Kita mengetahui fungsinya hanya dari namanya - entri direktori. Siapa pun yang pernah menggunakan ADSI tahu bahwa saat mengoperasikan IIS dan WinNT, kita juga perlu menyediakan Pathnya. Saat mengoperasikan IIS, format Path ini adalah:
IIS://ComputerName/Service/Website/Directory
ComputerName: yaitu pengoperasiannya
.server Namanya bisa berupa nama atau IP.
Layanan: Server yang dioperasikan. Ada layanan Web, FTP, dan SMTP di IIS. Kami terutama mengoperasikan fungsi Web IIS, jadi di sini adalah "W3SVC".
Situs Web: Layanan IIS dapat mencakup banyak situs. Ini adalah situs yang digunakan untuk mengatur operasi. Nilainya angka, defaultnya 1, menandakan situs default, kalau ada yang lain, mulai dari 1 dan seterusnya.
Direktori: Tak perlu dikatakan lagi, ini adalah nama direktori untuk pengoperasiannya. Direktori teratas suatu situs umumnya adalah "ROOT", dan direktori lain adalah turunannya.
Pertama, kita mendapatkan direktori tingkat atas (direktori root) dari sebuah situs:
DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");
Jika tidak ada pengecualian yang terjadi saat kita membuat objek ini, artinya bahwa direktori ini benar-benar ada.
Mari kita tambahkan direktori virtual baru. Misalnya, kita ingin menambahkan "Aspcn":
DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn", "IIsWebVirtualDir");
newVirDir.Invoke("Buat Aplikasi",benar);
newVirDir.CommitChanges();
rootfolder.CommitChanges();
Ide membuat direktori sangat sederhana, yaitu menambahkan record lain ke subset direktori root (rootfolder.Children). Metode Add di kelas DirectoryEntries digunakan di sini. Metode ini mengembalikan DirectoryEntry, yang mewakili direktori yang baru ditambahkan. Salah satu parameternya adalah nama direktori virtual, dan parameter kedua adalah nama kelas Skema untuk menunjukkan jenis direktori yang kami tambahkan. Kemudian gunakan metode Invoke dari DirectoryEntry untuk memanggil metode "AppCreate" di ADSI untuk benar-benar membuat direktori (tampaknya direktori tersebut dapat berhasil dibuat tanpa mengambil langkah ini, tetapi demi keamanan, semua orang harus menggunakannya), dan akhirnya memanggil yang baru, Metode CommitChanges dari direktori root mengkonfirmasi operasi ini.
Saat membuat direktori baru, kita juga dapat memberikan nilai pada atribut direktori ini pada saat yang sama, tetapi pengalaman praktis saya memberi tahu saya bahwa yang terbaik adalah tidak melakukan ini jika kita memberikan nilai saat membuat direktori baru , akan ada banyak atribut yang tidak berhasil ditetapkan. Misalnya, atribut penting mewakili atribut Path yang sebenarnya dari direktori. Oleh karena itu, Feidao menyarankan Anda membuat direktori terlebih dahulu dan kemudian menetapkan nilai, yaitu memperbarui informasi direktori.
Perbarui direktori virtual
. Saya yakin semua orang sudah familiar dengan IIS dan memahami beberapa pengaturan penting di IIS, seperti dapat dibaca (AccessRead), dapat ditulis (AccessWrite), dapat dieksekusi (AccessExecute), dll. Ini dapat dicapai dengan memberikan nilai pada kumpulan properti Properties dari DirectoryEntry. Penugasan dapat dilakukan dengan dua cara:
yang pertama adalah dengan memanggil metode Tambah dari kumpulan Properti, seperti:
dir.Properties["AccessRead"].Add(true);
yang kedua adalah dengan memberikan nilai pada nilai indeks pertama :
dir.Properti["AccessRead"][0] = true;
Kedua metode tersebut dimungkinkan. Itu tergantung pada preferensi Anda.
Sebelum memberikan nilai, kita masih perlu menentukan target yang akan diberikan :) Disini kita menggunakan metode Find dari kelas DirectoryEntries, seperti:
DirectoryEntry
de = rootfolder.Children.Find("Aspcn", "IIsVirtualDir");
ditemukan, kami siap untuk ditugaskan. Pastikan untuk memperhatikan dengan baik saat menetapkan nilai. Ada banyak nilai atribut dalam direktori virtual, dan Anda dapat memeriksa banyak nilai tersebut. . : (Terlalu banyak, dan saya tidak akan mengulanginya. Anda dapat memeriksanya di situs web Microsoft :)
Yang lebih umum digunakan adalah: AccessRead, AccessWrite, AccessExecute, AccessScript, DefaultDoc, EnableDefaultDoc, Path
Metodemenghapus
a direktori virtual juga Sangat sederhana, cukup temukan direktori virtual yang ingin Anda hapus, lalu panggil metode AppDelete.
DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");
de.Invoke("AppDelete",benar);
rootfolder.CommitChanges();
Metode lain adalah dengan memanggil metode Hapus direktori Root.
objek[] paras = objek baru[2];
paras[0] = "IIsWebVirtualDir"; //Menunjukkan bahwa operasi adalah direktori virtual
paras[1] = "Aspn";
rootfolder.Invoke("Hapus",paras);
rootfolder.CommitChanges();