C#实现获取IIS站点及虚拟目录信息的方法
本文实例讲述了C#实现获取IIS站点及虚拟目录信息的方法。分享给大家供大家参考。具体如下:
usingSystem;
usingSystem.DirectoryServices;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
DirectoryEntryrootEntry=newDirectoryEntry("IIS://localhost/w3svc");
intsiteID=1;
foreach(DirectoryEntryentryinrootEntry.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();
DirectoryEntryvirEntry=newDirectoryEntry(entry.Path+"/ROOT");
foreach(DirectoryEntryentryVirtualinvirEntry.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();
}
}
intID=Convert.ToInt32(entry.Name);
if(ID>=siteID)
{
siteID=ID+1;
}
}
}
}
}
publicclassIISWorker
{
///<summary>
///得到网站的物理路径
///</summary>
///<paramname="rootEntry">网站节点</param>
///<returns></returns>
publicstaticstringGetWebsitePhysicalPath(DirectoryEntryrootEntry)
{
stringphysicalPath="";
foreach(DirectoryEntrychildEntryinrootEntry.Children)
{
if((childEntry.SchemaClassName=="IIsWebVirtualDir")&&(childEntry.Name.ToLower()=="root"))
{
if(childEntry.Properties["Path"].Value!=null)
{
physicalPath=childEntry.Properties["Path"].Value.ToString();
}
else
{
physicalPath="";
}
}
}
returnphysicalPath;
}
}
}
希望本文所述对大家的C#程序设计有所帮助。