IIS:带有C#的IIS的wwwroot目录?

Kot*_*tan 1 .net c# iis

如何从IIS元数据库中获取带有C#的IIS的所有(物理)wwwroot目录(主目录)?

Kev*_*Kev 5

如果您使用的是IIS6:

您需要System.DirectoryServices在"添加引用.NET程序集"选项卡中的Visual Studio中添加对引用:

using System;
using System.DirectoryServices;

namespace ListRootAppPathsIIS6
{
  class Program
  {
    static void Main(string[] args)
    {
      using (DirectoryEntry de = new DirectoryEntry("IIS://Localhost/W3SVC"))
      {
        foreach (DirectoryEntry w3svc in de.Children)
        {
          if (w3svc.SchemaClassName == "IIsWebServer")
          {
            string rootPath = 
                String.Format("IIS://Localhost/W3SVC/{0}/root", w3svc.Name);
            using (DirectoryEntry root = new DirectoryEntry(rootPath))
            {
              string info = String.Format("{0} - {1} - {2}", 
                  w3svc.Name, 
                  w3svc.Properties["ServerComment"].Value, 
                  root.Properties["Path"].Value);

              Console.WriteLine(info);
            }
          }
        }
      }

      Console.ReadLine();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是IIS7:

添加引用 C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

using System;
using System.Linq;
using Microsoft.Web.Administration;

namespace ListRootAppPathsIIS7
{
  class Program
  {
    static void Main(string[] args)
    {
      using(ServerManager serverManager = new ServerManager())
      {
        foreach (var site in serverManager.Sites)
        {
          var app = site.Applications.Where(a => a.Path == "/").First();
          var vdir = app.VirtualDirectories.Where(v => v.Path == "/").First();
          string info = String.Format("{0} - {1} - {2}", 
              site.Id, 
              site.Name, 
              Environment.ExpandEnvironmentVariables(vdir.PhysicalPath));

          Console.WriteLine(info);
        }
      }
      Console.ReadLine();

    }
  }
}
Run Code Online (Sandbox Code Playgroud)

System.Directoryservices如果已安装IIS6管理兼容性位,则第一种方法(使用)将与IIS7一起使用.

在这两种情况下,您都需要以管理员身份运行.