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;//最大工作进程数 }//创建SiteSite 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("\t常规:");System.Console.WriteLine("\t\t.NET Framework 版本:{0}", sm.ApplicationPoolDefaults.ManagedRuntimeVersion);System.Console.WriteLine("\t\t队列长度:{0}", sm.ApplicationPoolDefaults.QueueLength);System.Console.WriteLine("\t\t托管管道模式:{0}", sm.ApplicationPoolDefaults.ManagedPipelineMode.ToString());System.Console.WriteLine("\t\t自动启动:{0}", sm.ApplicationPoolDefaults.AutoStart);System.Console.WriteLine("\tCPU:");System.Console.WriteLine("\t\t处理器关联掩码:{0}", sm.ApplicationPoolDefaults.Cpu.SmpProcessorAffinityMask);System.Console.WriteLine("\t\t限制:{0}", sm.ApplicationPoolDefaults.Cpu.Limit);System.Console.WriteLine("\t\t限制操作:{0}", sm.ApplicationPoolDefaults.Cpu.Action.ToString());System.Console.WriteLine("\t\t限制间隔(分钟):{0}", sm.ApplicationPoolDefaults.Cpu.ResetInterval.TotalMinutes);System.Console.WriteLine("\t\t已启用处理器关联:{0}", sm.ApplicationPoolDefaults.Cpu.SmpAffinitized);System.Console.WriteLine("\t回收:");System.Console.WriteLine("\t\t发生配置更改时禁止回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowRotationOnConfigChange);System.Console.WriteLine("\t\t固定时间间隔(分钟):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Time.TotalMinutes);System.Console.WriteLine("\t\t禁用重叠回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowOverlappingRotation);System.Console.WriteLine("\t\t请求限制:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Requests);System.Console.WriteLine("\t\t虚拟内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Memory);System.Console.WriteLine("\t\t专用内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.PrivateMemory);System.Console.WriteLine("\t\t特定时间:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Schedule.ToString());System.Console.WriteLine("\t\t生成回收事件日志条目:{0}", sm.ApplicationPoolDefaults.Recycling.LogEventOnRecycle.ToString());System.Console.WriteLine("\t进程孤立:");System.Console.WriteLine("\t\t可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionExe);System.Console.WriteLine("\t\t可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionParams);System.Console.WriteLine("\t\t已启用:{0}", sm.ApplicationPoolDefaults.Failure.OrphanWorkerProcess);System.Console.WriteLine("\t进程模型:");System.Console.WriteLine("\t\tPing 间隔(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingInterval.TotalSeconds);System.Console.WriteLine("\t\tPing 最大响应时间(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingResponseTime.TotalSeconds);System.Console.WriteLine("\t\t标识:{0}", sm.ApplicationPoolDefaults.ProcessModel.IdentityType);System.Console.WriteLine("\t\t用户名:{0}", sm.ApplicationPoolDefaults.ProcessModel.UserName);System.Console.WriteLine("\t\t密码:{0}", sm.ApplicationPoolDefaults.ProcessModel.Password);System.Console.WriteLine("\t\t关闭时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.ShutdownTimeLimit.TotalSeconds);System.Console.WriteLine("\t\t加载用户配置文件:{0}", sm.ApplicationPoolDefaults.ProcessModel.LoadUserProfile);System.Console.WriteLine("\t\t启动时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.StartupTimeLimit.TotalSeconds);System.Console.WriteLine("\t\t允许 Ping:{0}", sm.ApplicationPoolDefaults.ProcessModel.PingingEnabled);System.Console.WriteLine("\t\t闲置超时(分钟):{0}", sm.ApplicationPoolDefaults.ProcessModel.IdleTimeout.TotalMinutes);System.Console.WriteLine("\t\t最大工作进程数:{0}", sm.ApplicationPoolDefaults.ProcessModel.MaxProcesses);System.Console.WriteLine("\t快速故障防护:");System.Console.WriteLine("\t\t“服务不可用”响应类型:{0}", sm.ApplicationPoolDefaults.Failure.LoadBalancerCapabilities.ToString());System.Console.WriteLine("\t\t故障间隔(分钟):{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionInterval.TotalMinutes);System.Console.WriteLine("\t\t关闭可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownExe);System.Console.WriteLine("\t\t关闭可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownParams);System.Console.WriteLine("\t\t已启用:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtection);System.Console.WriteLine("\t\t最大故障数:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionMaxCrashes);System.Console.WriteLine("\t\t允许32位应用程序运行在64位 Windows 上:{0}", sm.ApplicationPoolDefaults.Enable32BitAppOnWin64);System.Console.WriteLine();System.Console.WriteLine("网站默认设置:");System.Console.WriteLine("\t常规:");System.Console.WriteLine("\t\t物理路径凭据:UserName={0}, Password={1}", sm.VirtualDirectoryDefaults.UserName, sm.VirtualDirectoryDefaults.Password);System.Console.WriteLine("\t\t物理路径凭据登录类型:{0}", sm.VirtualDirectoryDefaults.LogonMethod.ToString());System.Console.WriteLine("\t\t应用程序池:{0}", sm.ApplicationDefaults.ApplicationPoolName);System.Console.WriteLine("\t\t自动启动:{0}", sm.SiteDefaults.ServerAutoStart);System.Console.WriteLine("\t行为:");System.Console.WriteLine("\t\t连接限制:");System.Console.WriteLine("\t\t\t连接超时(秒):{0}", sm.SiteDefaults.Limits.ConnectionTimeout.TotalSeconds);System.Console.WriteLine("\t\t\t最大并发连接数:{0}", sm.SiteDefaults.Limits.MaxConnections);System.Console.WriteLine("\t\t\t最大带宽(字节/秒):{0}", sm.SiteDefaults.Limits.MaxBandwidth);System.Console.WriteLine("\t\t失败请求跟踪:");System.Console.WriteLine("\t\t\t跟踪文件的最大数量:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.MaxLogFiles);System.Console.WriteLine("\t\t\t目录:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Directory);System.Console.WriteLine("\t\t\t已启用:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Enabled);System.Console.WriteLine("\t\t已启用的协议:{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("\t类型:{0}", tmp.Protocol);System.Console.WriteLine("\tIP 地址:{0}", tmp.EndPoint.Address.ToString());System.Console.WriteLine("\t端口:{0}", tmp.EndPoint.Port.ToString());System.Console.WriteLine("\t主机名:{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("\t连接超时(秒):{0}", s.Limits.ConnectionTimeout.TotalSeconds);System.Console.WriteLine("\t最大并发连接数:{0}", s.Limits.MaxConnections);System.Console.WriteLine("\t最大带宽(字节/秒):{0}", s.Limits.MaxBandwidth);System.Console.WriteLine("失败请求跟踪:");System.Console.WriteLine("\t跟踪文件的最大数量:{0}", s.TraceFailedRequestsLogging.MaxLogFiles);System.Console.WriteLine("\t目录:{0}", s.TraceFailedRequestsLogging.Directory);System.Console.WriteLine("\t已启用:{0}", s.TraceFailedRequestsLogging.Enabled);System.Console.WriteLine("日志:");//System.Console.WriteLine("\t启用日志服务:{0}", s.LogFile.Enabled);System.Console.WriteLine("\t格式:{0}", s.LogFile.LogFormat.ToString());System.Console.WriteLine("\t目录:{0}", s.LogFile.Directory);System.Console.WriteLine("\t文件包含字段:{0}", s.LogFile.LogExtFileFlags.ToString());System.Console.WriteLine("\t计划:{0}", s.LogFile.Period.ToString());System.Console.WriteLine("\t最大文件大小(字节):{0}", s.LogFile.TruncateSize);System.Console.WriteLine("\t使用本地时间进行文件命名和滚动更新:{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("\t模式名:{0}", tmp.Schema.Name);System.Console.WriteLine("\t虚拟路径:{0}", tmp.Path);System.Console.WriteLine("\t物理路径:{0}", tmp.VirtualDirectories["/"].PhysicalPath);//System.Console.WriteLine("\t物理路径凭据:{0}", tmp.Methods.ToString());System.Console.WriteLine("\t应用程序池:{0}", tmp.ApplicationPoolName);System.Console.WriteLine("\t已启用的协议:{0}", tmp.EnabledProtocols);}System.Console.WriteLine("\t虚拟目录 列表:");foreach (var tmp2 in tmp.VirtualDirectories){if (tmp2.Path != "/"){System.Console.WriteLine("\t\t模式名:{0}", tmp2.Schema.Name);System.Console.WriteLine("\t\t虚拟路径:{0}", tmp2.Path);System.Console.WriteLine("\t\t物理路径:{0}", tmp2.PhysicalPath);//System.Console.WriteLine("\t\t物理路径凭据:{0}", tmp2.Methods.ToString());System.Console.WriteLine("\t\t物理路径凭据登录类型:{0}", tmp2.LogonMethod.ToString());}}}}
View Code
C#操作IIS站点 Microsoft.Web.Administration.dll相关推荐
- IIS 7管理API——Microsoft.Web.Administration介绍
本文翻译整理自Carlos Aguilar Mares的blog文章:Microsoft.Web.Administration in IIS 7. 请注意本文的内容均基于Windows Vista B ...
- C#操作IIS程序池及站点的创建配置(转)
C#操作IIS程序池及站点的创建配置(转) 原文:http://www.cnblogs.com/wujy/archive/2013/02/28/2937667.html 最近在做一个WEB程序的安装包 ...
- C#中操作IIS 7.0
C#中操作IIS 7.0 作者:Jaxu 出处:博客园 2009-3-26 10:17:52 阅读 53 次 <script type="text/javascript" ...
- 让Microsoft Web Application Stress Tool 支持非80端口的站点测试
刚在做内网内某个项目的性能测试 项目部署的端口为4000 然后用Microsoft Web Application Stress Tool 测试 发现居然不支持非80端口 找遍整个配置界面没发现por ...
- 服务器08系统伪静态,win2003/2008服务器IIS站点安装设置伪静态的方法
第一种方法:适用于win2008,IIS7以上 IIS7以上可以使用URL重写模块,并在根目录下通过 web.config 文件设置伪静态的方法,这个就不多说了,微软官方可以下载安装:http://w ...
- Microsoft Web Farm Framework (WFF) 2.0正式发布
Microsoft Web Farm Framework (WFF) 2.0 是微软开发的.基于IIS 7.x的小插件,能够帮助我们轻松实现Web网站的高性能.高可用性,用来在Web服务器群上提供和管 ...
- Microsoft Web 平台安装程序 (Web PI) Microsoft Web Platform Installer
Microsoft Web 平台安装程序 3.0 (Web PI) 是一款免费的工具,使用它可以获得 Microsoft Web 平台的最新组件(包括 Internet Information Ser ...
- Net中如何操作IIS
Net中实际上已经为我们在这方面做得很好了.FCL中提供了不少的类来帮助我们完成这项工作,让我们的开发工作变非常简单和快乐.编程控制IIS实际上很简单,和ASP一样,.Net中需要使用ADSI来操作I ...
- 解决访问被拒绝:Microsoft.Web.UI.WebControls的问题
asp.net程序编译调试时偶尔出现访问被拒绝的错误 问题描述: 编写asp.net程序,当编译调试比较频繁的时候,很容易经常地 出现访问被拒绝.形如: 分析器错误信息: 访问被拒绝: "M ...
最新文章
- Kaggle竞赛中使用YoloV5将物体检测的性能翻倍的心路历程
- JUC并发编程八 并发架构--park,unpark
- ML之GB:GB算法相关论文、相关思路、关键步骤、代码实现、配图集合、案例应用之详细攻略
- Android系统从驱动到上层服务再到应用的两种服务架构方式
- FAILED: Error in metadata: MetaException(message:Got exception: java.net.ConnectException
- 数据库---主键约束
- Android之用sharedUserId来实现不同应用(APK)数据共享
- 面试又栽在JVM上了!
- leetcode - 740. 删除与获得点数
- Java 算法 FBI树
- 《设计模式详解》手写简单的 Spring 框架
- 在centos 6.5下安装svn (Subversion)
- 利用.htaccess绑定域名到子目录
- python语言能做什么-python语言可以干什么
- python核心编程课后习题解答第三章
- [Xilinx FPGA] #2 Xilinx ISE Help Notes #1 -1.8.2019
- 笔记本插入耳机声音外放问题解决方式—1
- PyCharm入门教程——多个插入符号
- 英语学习、常用疑问句型,否定句
- 微信小程序语音搜索功能