如何使用Microsoft.Web.Administration操作IIS7.0

IIS 7.0提供了一个全面的管理代码管理应用程序编程接口(API),允许在XML配置文件,方便访问服务器对象的完整操作。 这份文件将引导使用新的管理API来修改服务器的配置和管理服务器对象。

IIS 7.0中包括Microsoft.Web.Administration,这是一个新的用于Web服务器,使通过XML配置文件的完整操作编辑配置管理API。它还提供了对象属性和状态便于来管理服务器。该API配置编辑方面提供编程访问读写在IIS 7.0配置文件层次结构和具体的配置文件的配置属性。这个API对象管理方面提供了一个高层管理对象进行直接管理的服务器(即站点,应用程序池,工作进程等)系列。

管理类位于Microsoft.Web.Administration命名空间。这些类提供了一个弱类型的接口来访问配置节,并与代表的属性和配置属性(像一个虚拟目录的路径)或采取的行动的对象(如回收应用程序池)方法方便的对象。

需要引入Microsoft.Web.Administration.dll 一般位于C:\Windows\System32\inetsrv下

创建一个新的站点


下面的代码创建名为其根施和根虚拟目录“赛车网站”的网站。 它还设置了站点使用80端口的HTTP协议和定义的物理路径为d:\inetput\wwwroot\racing。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;
namespace MSWebAdmin_Application
{
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
Site mySite = serverManager.Sites.Add("Racing Cars Site", d:\\inetpub\\wwwroot\racing", 8080);
mySite.ServerAutoStart = true;
serverManager.CommitChanges();
}
}
}

该ServerManager是工厂类,包含一个方便的服务器设置为对象的属性和方法可以使用在一个强类型的方式。它是管理服务器的主入口点。 管理服务器可以通过其他已经完成(XML或存取原始配置状态的API调用)繁琐的路线,而是通过这些对象管理服务器是无缝的最常见的对象可用来设置通过服务器管理器使用,包括:应用程序,虚拟目录,网站,工作进程和应用程序域。
ServerManager serverManager = new ServerManager();

这些地点对象使访问网站的性能和应用。它也包含方法来添加一个站点系统或获得总地盘计数。该法还规定了新增的网站,虚拟目录的根路径,并作为整数端口号。另请注意,这个电话是被实例化成为网站的对象,mysite的,然后我们就可以在新创建的网站的行为直接通过修改其属性。
Site mySite = serverManager.Sites.Add("Racing Cars Site", d:\\inetpub\\wwwroot\\racing", 8080);

对象作出修改的便利性容易。从mysite的通过访问对象的属性,可以设置该站点的自动启动属性为“真”,直接不知道任何特定的XML属性或元素的概念。
mySite.ServerAutoStart = true;

另外,不同的路线,可能已经采取了修改自动启动财产是不实例化一个站点对象。相反,一旦获取该网站创建并修改其属性直接。管理对象使用了索引的概念,以供如名称或索引键的特定对象的搜索,而无需在昂贵的电话招致列出整个对象集。通过定义的名称可以得到具体对象和采取行动。
serverManager.Sites["Racing Cars Site"].ServerAutoStart = true;

为了更新,提交变更调用执行序列化配置的交易,如有发生了变化,到磁盘。
serverManager.CommitChanges();

执行上面的代码中的applicationHost.config内产生下面的输出部分。 而不是直接操纵的XML元素和属性在一级工作的,使用服务器管理器对象提供了一种便捷的方式来管理Web服务器。
<site name="Racing Cars Site" id="2" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\inetpub\wwwroot\racing" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8080:" />
</bindings>
</site>


创建新应用程序池


下面的代码为现有的“Racing Cars Site”站点修改它的名称和物理路径D:\inetput\wwwroot\racing。它还创建一个新的应用程序池,定义了一些属性,设置赛车站点使用该池,最后回收了。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;
namespace MSWebAdmin_Application
{
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
Site site = serverManager.Sites["Racing Cars Site"];
site.Name = "Racing Site";
site.Applications[0].VirtualDirectories[0].PhysicalPath = "d:\\racing";
serverManager.ApplicationPools.Add("RacingApplicationPool");
serverManager.Sites["Racing Site"].Applications[0].ApplicationPoolName = "RacingApplicationPool";
ApplicationPool apppool = serverManager.ApplicationPools["RacingApplicationPool"];
apppool.ManagedPipelineMode = ManagedPipelineMode.ISAPI;
serverManager.CommitChanges();
apppool.Recycle();
}
}
}

相反的索引,以获取该网站,你可以实例化一个对象,设置站点引用。一旦引用设置,您可以拨打该网站的对象的方法,在这种情况下名称,重新命名的网站上直接。
Site site = serverManager.Sites["Racing Cars Site"];
site.Name = "Racing Site";
这里是另一个索引用于获取根应用程序,然后在根目录,并设置它的物理路径。
site.Applications[0].VirtualDirectories[0].PhysicalPath = "d:\\racing";

除了站点对象,我们的应用程序池对象,提供了一个方便的方式来获取和设置配置属性,以及对国家的方法和数据的行为。 一个新的应用程序池,然后立即创建这个网站是在该应用程序池付诸表决。
serverManager.ApplicationPools.Add("RacingApplicationPool");
serverManager.Sites["Racing Site"].Applications[0].ApplicationPoolName = "RacingApplicationPool";

像服务器的站点对象管理器,服务器管理器应用程序池对象允许你创建应用程序池对象,并设置引用。您还可以获取和设置属性和调用方法的研究。

一旦应用程序池的配置数据是通过更新调用序列化到文件,您可以执行它的回收方法。 这个循环调用是没有必要的,因为应用程序池将简单地被创建,有没有必要。 但是,这说明了动作都可以在已创建后,才进行序列化到磁盘和服务器可以取到这一点的配置和采取行动的对象。
ApplicationPool apppool = serverManager.ApplicationPools["RacingApplicationPool"];
apppool.ManagedPipelineMode = ManagedPipelineMode.ISAPI;
serverManager.CommitChanges();
apppool.Recycle();

执行上面的代码在applicationHost.config内产生下面的输出部分。而不是直接操纵的XML元素和属性在一级工作的,使用服务器管理器对象提供了一种便捷的方式来管理Web服务器。
<site name="Racing Site" id="2" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="d:\racing" />
</application>
<bindings>
<binding protocol="http" bindingInformation=":8080:" />
</bindings>
</site>

此外,下面的变化发生在一节:
<add name="RacingApplicationPool" managedPipelineMode="ISAPI" />

设置在站点Web.config配置


下面的代码设置为网站“默认Web站点”的“启用”的段属性为false。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;
namespace MSWebAdmin_Application
{
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
Configuration config = mgr.GetWebConfiguration("默认Web站点");
ConfigurationSection section = config.GetSection("system.webServer/defaultDocument");
ConfigurationAttribute enabled = section.GetAttribute("enabled");
enabled.Value = true;
serverManager.CommitChanges();
}
}
}

配置是一个类,提供了访问,在系统中配置部分。基于对不同的调用获得配置,您可以访问的applicationHost.config,web.config,administration.config或任何其他配置文件。呼吁得到给定的站点的web.config文件 - 默认网站 - 和具体路径 - 根。
Configuration config = serverManager.GetWebConfiguration("默认Web站点");

一旦被收购的web.config文件(如果它不存在,是创建),调用得到一个部分制成。 我们正在寻找一节,以禁用它。即使在web.config文件不存在(或者如果它确实存在,但没有明确设定任何部分),仍然有效配置应用到站点的水平。 这个配置,将被覆盖。


通过使用部分对象的方法,你可以启用的属性,然后通过设定值法的价值。只有调用提交修改被序列化到磁盘上,服务器管理器的方法才立即使用新的变化。如果有多个实例的配置对象,调用commit更换服务器上的所有对象将持续到磁盘。
ConfigurationAttribute enabled = section.GetAttribute("enabled");
enabled.Value = true;
serverManager.CommitChanges();

另一种方法来获取和设置从一节的属性信息是通过索引器的使用。下面的代码行可用于在得到部分对象,以便设置Enabled属性值。
section["enabled"] = true;

最终的结果是在web.config文件中指定的站点设置的配置。
为站点设置applicationHost.config中配置



下面的代码设置为网站“默认Web站点”的“启用”的段属性为false。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Administration;

namespace MSWebAdmin_Application
{
class Program
{
static void Main(string[] args)
{
ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection section = config.GetSection("system.webServer/defaultDocument","默认网站");
ConfigurationAttribute enabled = section.GetAttribute("enabled");
enabled.Value = false;
serverManager.CommitChanges();
}
}
}
此代码是有效地与前面的任务相同,唯一的区别是配置管理器调用来获得通过GetApplicationHostconfiguration applicationHost.config文件。

:获得第调用是一个指定的IT部分都将被读取和/或路径修改为位置也是如此。
Configuration config = serverManager.GetApplicationHostConfiguration(); config = serverManager.GetApplicationHostConfiguration();

最终的结果是在applicationHost.config文件适用于通过一个指定的位置标记站点设置的配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值