本文实例讲述了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#程序设计有所帮助。