C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.DirectoryServices;
using System.Diagnostics;

namespace WindowsFormsApplication13
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        void ShowEntry(DirectoryEntry entry)
        {
            foreach (DirectoryEntry childEntry in entry.Children)
            {
                if (childEntry.SchemaClassName == "IIsWebServer")
                {
                    Debug.Print(childEntry.SchemaClassName + ":" + childEntry.Properties["ServerComment"].Value.ToString());
                    Debug.Print("*********************Start*************************");
                    foreach (var name in childEntry.Properties.PropertyNames)
                    {
                        Debug.Print(name + ":" + childEntry.Properties[name.ToString()].Value);
                    }
                    Debug.Print("*********************End*************************");
                }
                else if (childEntry.SchemaClassName == "IIsWebVirtualDir")
                {
                    Debug.Print(childEntry.SchemaClassName + ":" + childEntry.Name);
                    Debug.Print("*********************Start*************************");
                    foreach (var name in childEntry.Properties.PropertyNames)
                    {
                        Debug.Print(name + ":" + childEntry.Properties[name.ToString()].Value);
                    }
                    Debug.Print("*********************End*************************");
                }
                else
                {
                    //Debug.Print(childEntry.SchemaClassName);
                }
                ShowEntry(childEntry);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ShowEntry(new DirectoryEntry("IIS://localhost/w3svc"));
        }
    }
}

获取IIS树型目录:

public class SiteInfo
        {
            public string Name { get; set; }
            public string Path { get; set; }
            public bool IsApp { get; set; }
            public List<SiteInfo> Children { get; set; }
        }

        List<SiteInfo> getSiteList(DirectoryEntry entry)
        {
            var result = new List<SiteInfo>();
            foreach (DirectoryEntry childEntry in entry.Children)
            {
                var sites = getSiteList(childEntry);
                if (childEntry.SchemaClassName == "IIsWebServer")
                {
                    var site = new SiteInfo();
                    site.Name = childEntry.Properties["ServerComment"].Value.ToString();
                    site.Path = sites[0].Path;
                    site.IsApp = true;
                    site.Children = new List<SiteInfo>();
                    foreach (var subSite in sites[0].Children)
                        site.Children.Add(subSite);
                    result.Add(site);
                }
                else if (childEntry.SchemaClassName == "IIsWebVirtualDir")
                {
                    var site = new SiteInfo();
                    site.Name = childEntry.Name;
                    site.Path = childEntry.Properties["Path"].Value.ToString();
                    site.Children = sites;
                    if (childEntry.Properties.Contains("AppRoot")
                        && childEntry.Properties["AppRoot"].Value != null
                        && !string.IsNullOrEmpty(childEntry.Properties["AppRoot"].Value.ToString()))
                        site.IsApp = true;
                    result.Add(site);
                }
            }
            return result;
        }
时间: 2024-10-05 16:43:11

C#获取IIS所有站点及虚拟目录和应用程序(包含名称及详细信息)的相关文章

在Win7中IIS配置Asp.Net虚拟目录的方法及错误总结!

在Win7中IIS配置Asp.Net虚拟目录的方法总结! 一.右键[网站],点击[添加虚拟目录]或[虚拟应用程序],笔者建议最好建立虚拟应用程序,因为这就跟一个网站差不多,不用考虑路径问题. 二.直接输入相应内容选择路径就行了,如果要指定[应用程序池],需要先建立一个新的[应用程序池],配置与网站差不多了. 三.运行后,如果出现以下错误:HTTP 错误 500.19 一般是web.config配置问题,很简单,找到以下内容 <system.webServer> <defaultDocum

虚拟目录和应用程序的区别

在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式 A. 虚拟目录 B. 应用程序 简单总结下二者之间的异同 A.虚拟目录 虚拟目录是指在站点下建立一个虚拟子目录,指定一个固定的物理路径做为站点的应用路径. 1. 虚拟目录与父级站点共用一个应用程序池 例如:站点TestWeb(c:\Inetpub\wwwroot\ TestWeb)下建立了SubTestA(D:\SubTestA)的虚拟目录 若TestWeb为设定了Framework V2.0,则SubTestA也必须

IIS下 多站点 利用虚拟目录 访问共用(图片)文件夹

预期目的:站点A 和 站点B 共用同一个图片文件夹C 实现方式是: 在站点下添加虚拟目录 使虚拟目录指向共用文件夹 站点下的页面 使用图片的访问方式示意:<image src="C/1.png" />其中 C为虚拟目录 IIS的站点布局示意: --网站----Default Web Site------应用程序A http://localhost/A/index.html--------虚拟目录C 指向D:\www\C------应用程序B http://localhost

导出IIS Log列表,导出站点下虚拟目录列表

Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterConfiguration -Filter "IPEnabled='true'" | ? {$_.DefaultIPGateway -ne $null}).IPAddress[0] #导出所有站点的IISLog目录列表到IISLog.htm文件 $html = Get-Website|Sele

Apache配置站点与虚拟目录

一.单站点配置: 在apache中,配置一个站点是最基础的配置,在这里我只是要配置一个最基础的WEB站点,因此配置方式也是 非常简单,具体配置方式如下: #########主站点配置########### #侦听端口 Listen 80 #站点域名 ServerName www.test.cn #站点文件主目录 DocumentRoot /data/www/test #该站点限制 <Directory /> AllowOverride None Order deny,allow Deny fr

IIS6中给Framework2,。0站点的虚拟目录(2.0版本)下发布Web API项目(4.0版本)问题处理

Web-API项目以虚拟目录形式部署到IIS6/IIS7 若原有站点为Framework2.0版本,在此站点(或虚拟目录站点)下,新增API虚拟目录,然后选择Framework4.0版本,IIS6和IIS7配置有所不同. IIS6配置: 1)        在主站A中的web.config中,添加<location>节点,要包住<system.web> 和<system.codedom>,节点内容如下: <location path="." a

#Apache#多站点与虚拟目录配置

1.修改配置文件 Apache\conf\httpd.conf 找到 LoadModule vhost_alias_module modules/mod_vhost_alias.so     去掉前面的# 找到 Include conf/extra/httpd-vhosts.conf                                               去掉前面的# 2.多站点配置 Apache\conf\extra\httpd-vhosts.conf 增加(几个站点就增加

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&

[php]修改站点的虚拟目录

wamp默认的站点的目录是www的目录,可以修改appache的httpd.conf文件来修改目录,修改方法如下: 1. <Directory "D:/SoftWare/wamp/www/"> 修改为:<Directory "D:/Develop/project/php"> 2.注销documentroot目录 #DocumentRoot "D:/SoftWare/wamp/www/" 注:加#即使注释