本文实例讲述了 C# 实现获取 IIS 站点及 虚拟目录 信息的方法。分享给大家供大家参考。具体如下:
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#程序设计有所帮助。
dy("nrwz");
查看更多关于C#实现获取IIS站点及虚拟目录信息的方法的详细内容...