本文实例讲述了C#实现获取IIS站点及虚拟目录信息的方法。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main( string [] args) { DirectoryEntry rootEntry = new DirectoryEntry( "IIS://localhost/w3svc" ); int siteID = 1; foreach (DirectoryEntry entry in rootEntry.Children) { if (entry.SchemaClassName.Equals( "IIsWebServer" , StringComparison.OrdinalIgnoreCase)) { Console.WriteLine( "Name: {0}" , entry.Name); Console.WriteLine( "Path: {0}" , IISWorker.GetWebsitePhysicalPath(entry)); Console.WriteLine( "ServerBindings: {0}" , entry.Properties[ "ServerBindings" ].Value); Console.WriteLine(); DirectoryEntry virEntry = new DirectoryEntry(entry.Path + "/ROOT" ); foreach (DirectoryEntry entryVirtual in virEntry.Children) { if (entryVirtual.SchemaClassName.Equals( "IIsWebVirtualDir" , StringComparison.OrdinalIgnoreCase)) { Console.WriteLine( "SchemaClassName: {0}" , entryVirtual.SchemaClassName); Console.WriteLine( "Name: {0}" , entryVirtual.Name); Console.WriteLine( "Path: {0}" , entryVirtual.Properties[ "Path" ].Value); Console.WriteLine(); } } int ID = Convert.ToInt32(entry.Name); if (ID >= siteID) { siteID = ID + 1; } } } } } public class IISWorker { /// <summary> /// 得到网站的物理路径 /// </summary> /// <param name="rootEntry">网站节点</param> /// <returns></returns> public static string GetWebsitePhysicalPath(DirectoryEntry rootEntry) { string physicalPath = "" ; foreach (DirectoryEntry childEntry in rootEntry.Children) { if ((childEntry.SchemaClassName == "IIsWebVirtualDir" ) && (childEntry.Name.ToLower() == "root" )) { if (childEntry.Properties[ "Path" ].Value != null ) { physicalPath = childEntry.Properties[ "Path" ].Value.ToString(); } else { physicalPath = "" ; } } } return physicalPath; } } } |
希望本文所述对大家的C#程序设计有所帮助。