利用.NET平台实现IIS7编程控制
董宁
(武汉软件工程职业学院 武汉 430205)
摘要:在IIS7中所有可以通过IIS Manger和通过直接编辑配置文件完成的管理工作都可以用编程方法实现。我们可以使用程序自动完成一项独立的任务,例如创建一个网站、同时管理多台服务器,并开发一些工具帮助非管理员身份的用户执行某些操作,通过可编程方式,我们几乎可以完成任何IIS7管理工作。
关键词:.NET IIS7网站管理
1. 引言
微软公司的Internet信息服务(Internet Information Service,IIS)已经出现了十几年。目前,Windows Service 2008和Windows 7平台提供的IIS已经发展到了7.0版本,IIS已经成为一个完整的可配置Web应用程序服务平台,并且能够与操作系统紧密结合。
在管理本地的少数几台Web服务器时,利用IIS Manager,或者通过手动管理方法,我们就能够很好的完成IIS的管理任务。但是随着网站规模的扩大,网站服务器数量的增多,我们迫切需要一种更好的方法来管理服务器。
实际上,在IIS7中所有可以通过IIS Manger和通过直接编辑配置文件完成的管理工作都可以用编程方法实现。我们可以使用程序自动完成一项独立的任务,例如创建一个网站、同时管理多台服务器,并开发一些工具帮助非管理员身份的用户执行某些操作,通过可编程方式,我们几乎可以完成任何IIS7管理工作。
2. Microsoft.Web.Administration
Microsoft.Web.Administration API是专门为IIS7开发的新功能,为IIS7编程管理提供了强类型的.NET类的集合。在.NET项目中引用Microsoft.Web.Administration命名空间后,将可以使用其中包含的一系列预定义类,利用这些类,可以使得常用IIS对象的管理工作既简单又直接。
Microsoft.Web.Administration命名空间中根级别的类是ServerManager,这个类是其他所有类的基类。ServerManager有5个主要派生类:Site、Application、VirtualDirectory、ApplicationPool和WorkerProcess。这些类可以用于网站的创建与配置、启动和停止网站、查看当前运行的工作进程、访问与管理远程服务器和编辑网站配置文件。
一个Application属于一个Site,而一个VirtualDirectory属于一个Application。这些类型的对象都不能独立存在,它们必须是父对象的组成部分。利用WorkerProcess类,我们可以实时观察当前处于运行状态的配置数据,还可以访问当前运行的工作进程,甚至可以观察当前处于运行状态的请求。另外ServerManager类为我们提供了一系列方法,利用这些方法,我们可以直接管理配置文件。
3. 利用.NET平台编程控制IIS7
在.NET平台项目中添加对Microsoft.Web.Administration.dll的引用后就可以使用其提供的类编程控制IIS7了。
在IIS7中创建一个网站可以使用如下代码实现:
ServerManager SM = new ServerManager();
SM.Sites.Add("Site1", "http", ":80: ", "c:\\websites\\Site1");
SM.CommitChanges();
网站创建完成后,我们还可以为网站添加一个应用程序池,并设置应用程序池的框架版本:
ApplicationPool apppool = SM.ApplicationPools.Add("Site1AppPool");
apppool.ManagedRuntimeVersion = "v4.0";
SM.CommitChanges();
除了网站的创建与配置,我们还可以通过WorkerProcess类获取当前网站的运行状态:
foreach (WorkerProcess wp in SM.WorkerProcesses)
{
//查看服务器中的工作进程
Console.WriteLine(wp.AppPoolName + " " + wp.ProcessId);
//显示运行状态的网页请求
foreach (Request request in wp.GetRequests(0))
Console.WriteLine("Request:" + request.Url);
}
如果需要编程配置的服务器并不是本地服务器而是远程服务器的话,只需要改变ServerManager实例的创建方式即可:
ServerManager SM = ServerManager.OpenRemote("192.168.1.1");
有些时候网站建立之后还需要修改网站配置文件,在ServerManager中同样提供了修改网站配置文件的方法:
Configuration config = SM.GetWebConfiguration("Site1");
//找到system.webServer/defaultDocument配置节
ConfigurationSection section = config.GetSection("system.webServer/defaultDocument");
//设置上述配置节的enabled属性值为true
section.SetAttributeValue("enabled", true);
通过上述方法,我们可以用编程的方式完全控制与配置IIS7,这对管理大量网站和网站服务器提供了一种更加高效的方式。
4. 总结
IIS7的架构具有很好的可配置性和可定制性,支持跨UNC共享进行部署,还支持跨网站部署。IIS7将配置分配到最合理的文件中保存,因此提供了很好的可控制性,并且降低了委托的管理难度,同时还提供了很好的灵活性。从配置的角度出发,理解IIS7中的配置文件、location标记、配置节、锁、信息架构扩展和配置路径等内容,可以帮助我们更好的管理IIS7环境,同时为IIS7编程配置打下良好基础。
以编程的方式管理与配置IIS7,为网站服务器的管理提供了更多的方式,如利用Asp.net我们可以远程管理网站,利用.NET应用程序我们可以将写好的网站创建方式与配置一次性部署到大量的网站服务器上等。
通过理解IIS7的配置结构以及编程API,我们能够更有效的管理和扩展IIS7服务器。
参考文献:
[1]刘潇潇.基于.NET技术在线考试系统的设计与实现.信息与电脑,2010 04.
[2]朱晓辉 王杰华 石振国 陈苏蓉..NET下基于PowerDesigner和CodeSmith的软件自动化开发技术.计算机科学,2010 07.
作者简介:董宁,讲师,武汉软件工程职业学院软件技术系教师
通讯地址:武汉东湖新技术开发区关凤路特1号(武汉软件工程职业学院软件技术系)
邮政编码:430205 手机:13476291882
电子信箱:svc.dong@gmail.com