C#操作IIS站点 Microsoft.Web.Administration.dll

利用IIS7自带类库管理IIS现在变的更强大更方便,而完全可以不需要用DirecotryEntry这个类了(网上很多.net管理iis6.0的文章都用到了DirecotryEntry这个类 ),Microsoft.Web.Administration.dll位于IIS的目录(%WinDir%\System32\InetSrv)下,使用时需要引用,它基本上可以管理IIS7的各项配置。

这个类库的主体结构如下:

主要调用code 如下:

  using (ServerManager sm = ServerManager.OpenRemote("192.168.0.129"))
            {
                //创建站点
                sm.Sites.Add("test", @"D:DataBackup", 9898);
                //创建应用程序池
                sm.ApplicationPools.Add("test");
                //设置站点的应用程序池
                sm.Sites["test"].Applications[0].ApplicationPoolName = "test";
                sm.CommitChanges();
            }
  void CreateIISSite(string serverIP, string webName, int port, string path)
        {
            try
            {
                using (ServerManager sm = ServerManager.OpenRemote(serverIP))
                {
                    //创建应用程序池
                    ApplicationPool appPool = sm.ApplicationPools.FirstOrDefault(x => x.Name == webName);
                    if (appPool == null)
                    {
                        appPool = sm.ApplicationPools.Add(webName);
                        appPool.AutoStart = false;

                        appPool.QueueLength = 10000;
                        appPool.StartMode = StartMode.AlwaysRunning;//启动模式
                        appPool.Recycling.PeriodicRestart.Time = new TimeSpan();//回收时间间隔
                        appPool.ProcessModel.IdleTimeout = new TimeSpan();//闲置超时
                        appPool.ProcessModel.MaxProcesses = 1;//最大工作进程数
                    }
                    //创建Site
                    Site site = sm.Sites.FirstOrDefault(x => x.Name == webName);
                    if (site == null)
                    {
                        site = sm.Sites.Add(webName, path, port);
                        site.ServerAutoStart = true;
                                        
                        site.Bindings[0].EndPoint.Port = port;
                        Application root = site.Applications["/"];
                        root.ApplicationPoolName = webName;
                        root.VirtualDirectories["/"].PhysicalPath = path;
                        root.SetAttributeValue("preloadEnabled", true); /*预加载*/
                    }
                    sm.CommitChanges();
                }

            }
            catch (Exception ex)
            {
                ExceptionUtil.Throw(ex);
            }

        }

检查 计算机 是否安装有IIS   var service = ServiceController.GetServices(serverIp).FirstOrDefault(x => x.ServiceName == "W3SVC");

有关IIS预加载 大家可以参考:预加载会执行Application_Start方法。

IIS初始化(预加载),解决第一次访问慢,程序池被回收问题
IIS预编译提升加载速度


后来在网上发下一个查询属性的code 不错,先copy过来

 
 Microsoft.Web.Administration.ServerManager sm = new Microsoft.Web.Administration.ServerManager();

            System.Console.WriteLine("应用程序池默认设置:");
            System.Console.WriteLine("	常规:");
            System.Console.WriteLine("		.NET Framework 版本:{0}", sm.ApplicationPoolDefaults.ManagedRuntimeVersion);
            System.Console.WriteLine("		队列长度:{0}", sm.ApplicationPoolDefaults.QueueLength);
            System.Console.WriteLine("		托管管道模式:{0}", sm.ApplicationPoolDefaults.ManagedPipelineMode.ToString());
            System.Console.WriteLine("		自动启动:{0}", sm.ApplicationPoolDefaults.AutoStart);

            System.Console.WriteLine("	CPU:");
            System.Console.WriteLine("		处理器关联掩码:{0}", sm.ApplicationPoolDefaults.Cpu.SmpProcessorAffinityMask);
            System.Console.WriteLine("		限制:{0}", sm.ApplicationPoolDefaults.Cpu.Limit);
            System.Console.WriteLine("		限制操作:{0}", sm.ApplicationPoolDefaults.Cpu.Action.ToString());
            System.Console.WriteLine("		限制间隔(分钟):{0}", sm.ApplicationPoolDefaults.Cpu.ResetInterval.TotalMinutes);
            System.Console.WriteLine("		已启用处理器关联:{0}", sm.ApplicationPoolDefaults.Cpu.SmpAffinitized);

            System.Console.WriteLine("	回收:");
            System.Console.WriteLine("		发生配置更改时禁止回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowRotationOnConfigChange);
            System.Console.WriteLine("		固定时间间隔(分钟):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Time.TotalMinutes);
            System.Console.WriteLine("		禁用重叠回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowOverlappingRotation);
            System.Console.WriteLine("		请求限制:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Requests);
            System.Console.WriteLine("		虚拟内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Memory);
            System.Console.WriteLine("		专用内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.PrivateMemory);
            System.Console.WriteLine("		特定时间:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Schedule.ToString());
            System.Console.WriteLine("		生成回收事件日志条目:{0}", sm.ApplicationPoolDefaults.Recycling.LogEventOnRecycle.ToString());

            System.Console.WriteLine("	进程孤立:");
            System.Console.WriteLine("		可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionExe);
            System.Console.WriteLine("		可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionParams);
            System.Console.WriteLine("		已启用:{0}", sm.ApplicationPoolDefaults.Failure.OrphanWorkerProcess);

            System.Console.WriteLine("	进程模型:");
            System.Console.WriteLine("		Ping 间隔(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingInterval.TotalSeconds);
            System.Console.WriteLine("		Ping 最大响应时间(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingResponseTime.TotalSeconds);
            System.Console.WriteLine("		标识:{0}", sm.ApplicationPoolDefaults.ProcessModel.IdentityType);
            System.Console.WriteLine("		用户名:{0}", sm.ApplicationPoolDefaults.ProcessModel.UserName);
            System.Console.WriteLine("		密码:{0}", sm.ApplicationPoolDefaults.ProcessModel.Password);
            System.Console.WriteLine("		关闭时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.ShutdownTimeLimit.TotalSeconds);
            System.Console.WriteLine("		加载用户配置文件:{0}", sm.ApplicationPoolDefaults.ProcessModel.LoadUserProfile);
            System.Console.WriteLine("		启动时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.StartupTimeLimit.TotalSeconds);
            System.Console.WriteLine("		允许 Ping:{0}", sm.ApplicationPoolDefaults.ProcessModel.PingingEnabled);
            System.Console.WriteLine("		闲置超时(分钟):{0}", sm.ApplicationPoolDefaults.ProcessModel.IdleTimeout.TotalMinutes);
            System.Console.WriteLine("		最大工作进程数:{0}", sm.ApplicationPoolDefaults.ProcessModel.MaxProcesses);

            System.Console.WriteLine("	快速故障防护:");
            System.Console.WriteLine("		“服务不可用”响应类型:{0}", sm.ApplicationPoolDefaults.Failure.LoadBalancerCapabilities.ToString());
            System.Console.WriteLine("		故障间隔(分钟):{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionInterval.TotalMinutes);
            System.Console.WriteLine("		关闭可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownExe);
            System.Console.WriteLine("		关闭可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownParams);
            System.Console.WriteLine("		已启用:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtection);
            System.Console.WriteLine("		最大故障数:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionMaxCrashes);
            System.Console.WriteLine("		允许32位应用程序运行在64位 Windows 上:{0}", sm.ApplicationPoolDefaults.Enable32BitAppOnWin64);

            System.Console.WriteLine();
            System.Console.WriteLine("网站默认设置:");
            System.Console.WriteLine("	常规:");
            System.Console.WriteLine("		物理路径凭据:UserName={0}, Password={1}", sm.VirtualDirectoryDefaults.UserName, sm.VirtualDirectoryDefaults.Password);
            System.Console.WriteLine("		物理路径凭据登录类型:{0}", sm.VirtualDirectoryDefaults.LogonMethod.ToString());
            System.Console.WriteLine("		应用程序池:{0}", sm.ApplicationDefaults.ApplicationPoolName);
            System.Console.WriteLine("		自动启动:{0}", sm.SiteDefaults.ServerAutoStart);
            System.Console.WriteLine("	行为:");
            System.Console.WriteLine("		连接限制:");
            System.Console.WriteLine("			连接超时(秒):{0}", sm.SiteDefaults.Limits.ConnectionTimeout.TotalSeconds);
            System.Console.WriteLine("			最大并发连接数:{0}", sm.SiteDefaults.Limits.MaxConnections);
            System.Console.WriteLine("			最大带宽(字节/秒):{0}", sm.SiteDefaults.Limits.MaxBandwidth);
            System.Console.WriteLine("		失败请求跟踪:");
            System.Console.WriteLine("			跟踪文件的最大数量:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.MaxLogFiles);
            System.Console.WriteLine("			目录:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Directory);
            System.Console.WriteLine("			已启用:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Enabled);
            System.Console.WriteLine("		已启用的协议:{0}", sm.ApplicationDefaults.EnabledProtocols);

            foreach (var s in sm.Sites)//遍历网站
            {
                System.Console.WriteLine();
                System.Console.WriteLine("模式名:{0}", s.Schema.Name);
                System.Console.WriteLine("编号:{0}", s.Id);
                System.Console.WriteLine("网站名称:{0}", s.Name);
                System.Console.WriteLine("物理路径:{0}", s.Applications["/"].VirtualDirectories["/"].PhysicalPath);
                System.Console.WriteLine("物理路径凭据:{0}", s.Methods.ToString());
                System.Console.WriteLine("应用程序池:{0}", s.Applications["/"].ApplicationPoolName);
                System.Console.WriteLine("已启用的协议:{0}", s.Applications["/"].EnabledProtocols);
                System.Console.WriteLine("自动启动:{0}", s.ServerAutoStart);
                System.Console.WriteLine("运行状态:{0}", s.State.ToString());

                System.Console.WriteLine("网站绑定:");
                foreach (var tmp in s.Bindings)
                {
                    System.Console.WriteLine("	类型:{0}", tmp.Protocol);
                    System.Console.WriteLine("	IP 地址:{0}", tmp.EndPoint.Address.ToString());
                    System.Console.WriteLine("	端口:{0}", tmp.EndPoint.Port.ToString());
                    System.Console.WriteLine("	主机名:{0}", tmp.Host);
                    //System.Console.WriteLine(tmp.BindingInformation);
                    //System.Console.WriteLine(tmp.CertificateStoreName);
                    //System.Console.WriteLine(tmp.IsIPPortHostBinding);
                    //System.Console.WriteLine(tmp.IsLocallyStored);
                    //System.Console.WriteLine(tmp.UseDsMapper);
                }

                System.Console.WriteLine("连接限制:");
                System.Console.WriteLine("	连接超时(秒):{0}", s.Limits.ConnectionTimeout.TotalSeconds);
                System.Console.WriteLine("	最大并发连接数:{0}", s.Limits.MaxConnections);
                System.Console.WriteLine("	最大带宽(字节/秒):{0}", s.Limits.MaxBandwidth);

                System.Console.WriteLine("失败请求跟踪:");
                System.Console.WriteLine("	跟踪文件的最大数量:{0}", s.TraceFailedRequestsLogging.MaxLogFiles);
                System.Console.WriteLine("	目录:{0}", s.TraceFailedRequestsLogging.Directory);
                System.Console.WriteLine("	已启用:{0}", s.TraceFailedRequestsLogging.Enabled);

                System.Console.WriteLine("日志:");
                //System.Console.WriteLine("	启用日志服务:{0}", s.LogFile.Enabled);
                System.Console.WriteLine("	格式:{0}", s.LogFile.LogFormat.ToString());
                System.Console.WriteLine("	目录:{0}", s.LogFile.Directory);
                System.Console.WriteLine("	文件包含字段:{0}", s.LogFile.LogExtFileFlags.ToString());
                System.Console.WriteLine("	计划:{0}", s.LogFile.Period.ToString());
                System.Console.WriteLine("	最大文件大小(字节):{0}", s.LogFile.TruncateSize);
                System.Console.WriteLine("	使用本地时间进行文件命名和滚动更新:{0}", s.LogFile.LocalTimeRollover);

                System.Console.WriteLine("----应用程序的默认应用程序池:{0}", s.ApplicationDefaults.ApplicationPoolName);
                System.Console.WriteLine("----应用程序的默认已启用的协议:{0}", s.ApplicationDefaults.EnabledProtocols);
                //System.Console.WriteLine("----应用程序的默认物理路径凭据:{0}", s.ApplicationDefaults.Methods.ToString());
                //System.Console.WriteLine("----虚拟目录的默认物理路径凭据:{0}", s.VirtualDirectoryDefaults.Methods.ToString());
                System.Console.WriteLine("----虚拟目录的默认物理路径凭据登录类型:{0}", s.VirtualDirectoryDefaults.LogonMethod.ToString());
                System.Console.WriteLine("----虚拟目录的默认用户名:{0}", s.VirtualDirectoryDefaults.UserName);
                System.Console.WriteLine("----虚拟目录的默认用户密码:{0}", s.VirtualDirectoryDefaults.Password);
                System.Console.WriteLine("应用程序 列表:");
                foreach (var tmp in s.Applications)
                {
                    if (tmp.Path != "/")
                    {
                        System.Console.WriteLine("	模式名:{0}", tmp.Schema.Name);
                        System.Console.WriteLine("	虚拟路径:{0}", tmp.Path);
                        System.Console.WriteLine("	物理路径:{0}", tmp.VirtualDirectories["/"].PhysicalPath);
                        //System.Console.WriteLine("	物理路径凭据:{0}", tmp.Methods.ToString());
                        System.Console.WriteLine("	应用程序池:{0}", tmp.ApplicationPoolName);
                        System.Console.WriteLine("	已启用的协议:{0}", tmp.EnabledProtocols);
                    }
                    System.Console.WriteLine("	虚拟目录 列表:");
                    foreach (var tmp2 in tmp.VirtualDirectories)
                    {
                        if (tmp2.Path != "/")
                        {
                            System.Console.WriteLine("		模式名:{0}", tmp2.Schema.Name);
                            System.Console.WriteLine("		虚拟路径:{0}", tmp2.Path);
                            System.Console.WriteLine("		物理路径:{0}", tmp2.PhysicalPath);
                            //System.Console.WriteLine("		物理路径凭据:{0}", tmp2.Methods.ToString());
                            System.Console.WriteLine("		物理路径凭据登录类型:{0}", tmp2.LogonMethod.ToString());
                        }
                    }
                }
            }
 Microsoft.Web.Administration.ServerManager sm = new Microsoft.Web.Administration.ServerManager();

            System.Console.WriteLine("应用程序池默认设置:");
            System.Console.WriteLine("	常规:");
            System.Console.WriteLine("		.NET Framework 版本:{0}", sm.ApplicationPoolDefaults.ManagedRuntimeVersion);
            System.Console.WriteLine("		队列长度:{0}", sm.ApplicationPoolDefaults.QueueLength);
            System.Console.WriteLine("		托管管道模式:{0}", sm.ApplicationPoolDefaults.ManagedPipelineMode.ToString());
            System.Console.WriteLine("		自动启动:{0}", sm.ApplicationPoolDefaults.AutoStart);

            System.Console.WriteLine("	CPU:");
            System.Console.WriteLine("		处理器关联掩码:{0}", sm.ApplicationPoolDefaults.Cpu.SmpProcessorAffinityMask);
            System.Console.WriteLine("		限制:{0}", sm.ApplicationPoolDefaults.Cpu.Limit);
            System.Console.WriteLine("		限制操作:{0}", sm.ApplicationPoolDefaults.Cpu.Action.ToString());
            System.Console.WriteLine("		限制间隔(分钟):{0}", sm.ApplicationPoolDefaults.Cpu.ResetInterval.TotalMinutes);
            System.Console.WriteLine("		已启用处理器关联:{0}", sm.ApplicationPoolDefaults.Cpu.SmpAffinitized);

            System.Console.WriteLine("	回收:");
            System.Console.WriteLine("		发生配置更改时禁止回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowRotationOnConfigChange);
            System.Console.WriteLine("		固定时间间隔(分钟):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Time.TotalMinutes);
            System.Console.WriteLine("		禁用重叠回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowOverlappingRotation);
            System.Console.WriteLine("		请求限制:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Requests);
            System.Console.WriteLine("		虚拟内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Memory);
            System.Console.WriteLine("		专用内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.PrivateMemory);
            System.Console.WriteLine("		特定时间:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Schedule.ToString());
            System.Console.WriteLine("		生成回收事件日志条目:{0}", sm.ApplicationPoolDefaults.Recycling.LogEventOnRecycle.ToString());

            System.Console.WriteLine("	进程孤立:");
            System.Console.WriteLine("		可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionExe);
            System.Console.WriteLine("		可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionParams);
            System.Console.WriteLine("		已启用:{0}", sm.ApplicationPoolDefaults.Failure.OrphanWorkerProcess);

            System.Console.WriteLine("	进程模型:");
            System.Console.WriteLine("		Ping 间隔(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingInterval.TotalSeconds);
            System.Console.WriteLine("		Ping 最大响应时间(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingResponseTime.TotalSeconds);
            System.Console.WriteLine("		标识:{0}", sm.ApplicationPoolDefaults.ProcessModel.IdentityType);
            System.Console.WriteLine("		用户名:{0}", sm.ApplicationPoolDefaults.ProcessModel.UserName);
            System.Console.WriteLine("		密码:{0}", sm.ApplicationPoolDefaults.ProcessModel.Password);
            System.Console.WriteLine("		关闭时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.ShutdownTimeLimit.TotalSeconds);
            System.Console.WriteLine("		加载用户配置文件:{0}", sm.ApplicationPoolDefaults.ProcessModel.LoadUserProfile);
            System.Console.WriteLine("		启动时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.StartupTimeLimit.TotalSeconds);
            System.Console.WriteLine("		允许 Ping:{0}", sm.ApplicationPoolDefaults.ProcessModel.PingingEnabled);
            System.Console.WriteLine("		闲置超时(分钟):{0}", sm.ApplicationPoolDefaults.ProcessModel.IdleTimeout.TotalMinutes);
            System.Console.WriteLine("		最大工作进程数:{0}", sm.ApplicationPoolDefaults.ProcessModel.MaxProcesses);

            System.Console.WriteLine("	快速故障防护:");
            System.Console.WriteLine("		“服务不可用”响应类型:{0}", sm.ApplicationPoolDefaults.Failure.LoadBalancerCapabilities.ToString());
            System.Console.WriteLine("		故障间隔(分钟):{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionInterval.TotalMinutes);
            System.Console.WriteLine("		关闭可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownExe);
            System.Console.WriteLine("		关闭可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownParams);
            System.Console.WriteLine("		已启用:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtection);
            System.Console.WriteLine("		最大故障数:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionMaxCrashes);
            System.Console.WriteLine("		允许32位应用程序运行在64位 Windows 上:{0}", sm.ApplicationPoolDefaults.Enable32BitAppOnWin64);

            System.Console.WriteLine();
            System.Console.WriteLine("网站默认设置:");
            System.Console.WriteLine("	常规:");
            System.Console.WriteLine("		物理路径凭据:UserName={0}, Password={1}", sm.VirtualDirectoryDefaults.UserName, sm.VirtualDirectoryDefaults.Password);
            System.Console.WriteLine("		物理路径凭据登录类型:{0}", sm.VirtualDirectoryDefaults.LogonMethod.ToString());
            System.Console.WriteLine("		应用程序池:{0}", sm.ApplicationDefaults.ApplicationPoolName);
            System.Console.WriteLine("		自动启动:{0}", sm.SiteDefaults.ServerAutoStart);
            System.Console.WriteLine("	行为:");
            System.Console.WriteLine("		连接限制:");
            System.Console.WriteLine("			连接超时(秒):{0}", sm.SiteDefaults.Limits.ConnectionTimeout.TotalSeconds);
            System.Console.WriteLine("			最大并发连接数:{0}", sm.SiteDefaults.Limits.MaxConnections);
            System.Console.WriteLine("			最大带宽(字节/秒):{0}", sm.SiteDefaults.Limits.MaxBandwidth);
            System.Console.WriteLine("		失败请求跟踪:");
            System.Console.WriteLine("			跟踪文件的最大数量:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.MaxLogFiles);
            System.Console.WriteLine("			目录:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Directory);
            System.Console.WriteLine("			已启用:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Enabled);
            System.Console.WriteLine("		已启用的协议:{0}", sm.ApplicationDefaults.EnabledProtocols);

            foreach (var s in sm.Sites)//遍历网站
            {
                System.Console.WriteLine();
                System.Console.WriteLine("模式名:{0}", s.Schema.Name);
                System.Console.WriteLine("编号:{0}", s.Id);
                System.Console.WriteLine("网站名称:{0}", s.Name);
                System.Console.WriteLine("物理路径:{0}", s.Applications["/"].VirtualDirectories["/"].PhysicalPath);
                System.Console.WriteLine("物理路径凭据:{0}", s.Methods.ToString());
                System.Console.WriteLine("应用程序池:{0}", s.Applications["/"].ApplicationPoolName);
                System.Console.WriteLine("已启用的协议:{0}", s.Applications["/"].EnabledProtocols);
                System.Console.WriteLine("自动启动:{0}", s.ServerAutoStart);
                System.Console.WriteLine("运行状态:{0}", s.State.ToString());

                System.Console.WriteLine("网站绑定:");
                foreach (var tmp in s.Bindings)
                {
                    System.Console.WriteLine("	类型:{0}", tmp.Protocol);
                    System.Console.WriteLine("	IP 地址:{0}", tmp.EndPoint.Address.ToString());
                    System.Console.WriteLine("	端口:{0}", tmp.EndPoint.Port.ToString());
                    System.Console.WriteLine("	主机名:{0}", tmp.Host);
                    //System.Console.WriteLine(tmp.BindingInformation);
                    //System.Console.WriteLine(tmp.CertificateStoreName);
                    //System.Console.WriteLine(tmp.IsIPPortHostBinding);
                    //System.Console.WriteLine(tmp.IsLocallyStored);
                    //System.Console.WriteLine(tmp.UseDsMapper);
                }

                System.Console.WriteLine("连接限制:");
                System.Console.WriteLine("	连接超时(秒):{0}", s.Limits.ConnectionTimeout.TotalSeconds);
                System.Console.WriteLine("	最大并发连接数:{0}", s.Limits.MaxConnections);
                System.Console.WriteLine("	最大带宽(字节/秒):{0}", s.Limits.MaxBandwidth);

                System.Console.WriteLine("失败请求跟踪:");
                System.Console.WriteLine("	跟踪文件的最大数量:{0}", s.TraceFailedRequestsLogging.MaxLogFiles);
                System.Console.WriteLine("	目录:{0}", s.TraceFailedRequestsLogging.Directory);
                System.Console.WriteLine("	已启用:{0}", s.TraceFailedRequestsLogging.Enabled);

                System.Console.WriteLine("日志:");
                //System.Console.WriteLine("	启用日志服务:{0}", s.LogFile.Enabled);
                System.Console.WriteLine("	格式:{0}", s.LogFile.LogFormat.ToString());
                System.Console.WriteLine("	目录:{0}", s.LogFile.Directory);
                System.Console.WriteLine("	文件包含字段:{0}", s.LogFile.LogExtFileFlags.ToString());
                System.Console.WriteLine("	计划:{0}", s.LogFile.Period.ToString());
                System.Console.WriteLine("	最大文件大小(字节):{0}", s.LogFile.TruncateSize);
                System.Console.WriteLine("	使用本地时间进行文件命名和滚动更新:{0}", s.LogFile.LocalTimeRollover);

                System.Console.WriteLine("----应用程序的默认应用程序池:{0}", s.ApplicationDefaults.ApplicationPoolName);
                System.Console.WriteLine("----应用程序的默认已启用的协议:{0}", s.ApplicationDefaults.EnabledProtocols);
                //System.Console.WriteLine("----应用程序的默认物理路径凭据:{0}", s.ApplicationDefaults.Methods.ToString());
                //System.Console.WriteLine("----虚拟目录的默认物理路径凭据:{0}", s.VirtualDirectoryDefaults.Methods.ToString());
                System.Console.WriteLine("----虚拟目录的默认物理路径凭据登录类型:{0}", s.VirtualDirectoryDefaults.LogonMethod.ToString());
                System.Console.WriteLine("----虚拟目录的默认用户名:{0}", s.VirtualDirectoryDefaults.UserName);
                System.Console.WriteLine("----虚拟目录的默认用户密码:{0}", s.VirtualDirectoryDefaults.Password);
                System.Console.WriteLine("应用程序 列表:");
                foreach (var tmp in s.Applications)
                {
                    if (tmp.Path != "/")
                    {
                        System.Console.WriteLine("	模式名:{0}", tmp.Schema.Name);
                        System.Console.WriteLine("	虚拟路径:{0}", tmp.Path);
                        System.Console.WriteLine("	物理路径:{0}", tmp.VirtualDirectories["/"].PhysicalPath);
                        //System.Console.WriteLine("	物理路径凭据:{0}", tmp.Methods.ToString());
                        System.Console.WriteLine("	应用程序池:{0}", tmp.ApplicationPoolName);
                        System.Console.WriteLine("	已启用的协议:{0}", tmp.EnabledProtocols);
                    }
                    System.Console.WriteLine("	虚拟目录 列表:");
                    foreach (var tmp2 in tmp.VirtualDirectories)
                    {
                        if (tmp2.Path != "/")
                        {
                            System.Console.WriteLine("		模式名:{0}", tmp2.Schema.Name);
                            System.Console.WriteLine("		虚拟路径:{0}", tmp2.Path);
                            System.Console.WriteLine("		物理路径:{0}", tmp2.PhysicalPath);
                            //System.Console.WriteLine("		物理路径凭据:{0}", tmp2.Methods.ToString());
                            System.Console.WriteLine("		物理路径凭据登录类型:{0}", tmp2.LogonMethod.ToString());
                        }
                    }
                }
            }
 
原文地址:https://www.cnblogs.com/jjg0519/p/7277890.html