C#中操作IIS 7.0

Microsoft自Windows Vista一起发布了IIS 7.0,这个已经是去年的话题了,随后,由.NET开发的Web 程序便逐步从IIS 6.0过渡到IIS 7.0上了。IIS 7.0提供了很多比上一版本更多的新特性,包括完全模块 化的组件、文本文件的配置功能、MMC图形模式管理工具等等,并且与.NET编程语言结合得更加紧密了, 在新添加的Microsoft.Web.Administration名称空间中也增加了很多用于管理和访问IIS的对象,从而使 得通过编程方式操作IIS更加简便。虽然在IIS 6.0时代我们也可以非常轻松地通过C#来管理服务器的IIS ,但相对来说,现在需要编写的代码更少,所能完成的功能更强。以下是我在曾经做的一个项目中所写的 一个类库中的一部分,主要实现了对IIS 7.0的操作,包括创建和删除站点、创建和删除虚拟目录、创建 和删除应用程序池、添加站点默认文档、判断站点和虚拟目录是否存在、以及检查Bindings信息等。

对于IIS 7.0的介绍读者如果有兴趣的话可以看看下面的两篇文章,我觉得不错!

http://blog.joycode.com/scottgu/archive/2007/04/08/100650.aspx

http://msdn.microsoft.com/en-us/magazine/cc163453.aspx

不说废话了,赶紧贴代码吧。

首先是对站点的管理。我写了一个相对较为通用的私有方法,然后在对外的方法中给出了调用接口, 包括了创建站点时应用程序池的创建和权限的管理。

CreateSite

/// <summary>
/// Create a new web site.
/// </summary>
/// <param name="siteName"></param>
/// <param name="bindingInfo">"*:&lt;port&gt;:&lt;hostname&gt;" <example>"*:80:myhost.com"</example></param>
/// <param name="physicalPath"></param>
public static void CreateSite(string siteName, string bindingInfo, string physicalPath)
{
    createSite(siteName, "http", bindingInfo, physicalPath, true, siteName + "Pool", ProcessModelIdentityType.NetworkService, null, null, ManagedPipelineMode.Integrated, null);
}

private static void createSite(string siteName, string protocol, string bindingInformation, string physicalPath,
        bool createAppPool, string appPoolName, ProcessModelIdentityType identityType,
        string appPoolUserName, string appPoolPassword, ManagedPipelineMode appPoolPipelineMode, string managedRuntimeVersion)
{
    using (ServerManager mgr = new ServerManager())
    {
        Site site = mgr.Sites.Add(siteName, protocol, bindingInformation, physicalPath);

        // PROVISION APPPOOL IF NEEDED
        if (createAppPool)
        {
            ApplicationPool pool = mgr.ApplicationPools.Add(appPoolName);
            if (pool.ProcessModel.IdentityType != identityType)
            {
                pool.ProcessModel.IdentityType = identityType;
            }
            if (!String.IsNullOrEmpty(appPoolUserName))
            {
                pool.ProcessModel.UserName = appPoolUserName;
                pool.ProcessModel.Password = appPoolPassword;
            }
            if (appPoolPipelineMode != pool.ManagedPipelineMode)
            {
                pool.ManagedPipelineMode = appPoolPipelineMode;
            }

            site.Applications["/"].ApplicationPoolName = pool.Name;
        }

        mgr.CommitChanges();
    }
}

时间: 2024-08-29 04:21:51

C#中操作IIS 7.0的相关文章

如何在Win 2003中识别IIS 6.0组件

目标 使用本模块可以实现: • 识别 Internet 信息服务 (IIS) 组件 • 了解何时启用 IIS 的各个组件 适用范围 本模块适用于下列产品和技术: • Microsoft Windows Server 2003 操作系统 • Internet 信息服务 6.0 如何使用本模块 本模块与 Windows Server 2003 安全指南配合使用,是该指南的补充材料.完成默认安装后,请使用本模块了解 IIS 的服务和功能.还可以使用本模块了解每个相关服务的角色以及何时启用这些角色. 概

C#程序中操作IIS的应用程序池与站点分配

 一个应用程序池可以有多个站点,一个站点只对应一个应用程序池. 编程由来:        存放在一个应用程序池里的站点过多就不便于操作,所以需把其中一些站点分配到其他程序池中. 编程题目:       用户输入一个数字或者一个数字+一个名字.程序对站点的所在应用程序池进行统计,用户输入的数字用于限制应用程序池里面的最大容量数,如果超出该容量,将把超出的站点分配到其他程序应用池,或者新建的一个应用程序池,把站点分配进去. 如果用户输入一个数字的情况,将遍历所有程序应用池:如果用户输入一个数字+一个

ASP.NET操作IIS中的虚拟目录

asp.net|iis|虚拟目录     在做系统开发的过程中,我们经常会遇到用asp.net来操作IIS,如新建虚拟目录.更改虚拟目录的属性.删除虚拟目录等操作,现在分析如下://假如虚拟目录名为"Webtest",先在项目中引用 //System.DirectoryServices.dll,再 using System.DirectoryServices; protected System.DirectoryServices.DirectoryEntry dirroot; 1.添加

.Net中如何操作IIS(源代码) (原创)

iis|原创|源代码 .Net中如何操作IIS(源代码) (原创)作者: 飞刀.Net        人气: 2398///***********************************************************///************** IIS控制管理类 1.0 Beta **************///************** Author: 飞刀 **************///************** http://www.aspcn.c

.Net中如何操作IIS

iis Net中实际上已经为我们在这方面做得很好了.FCL中提供了不少的类来帮助我们完成这项工作,让我们的开发工作变非常简单和快乐.编程控制IIS实际上很简单,和ASP一样,.Net中需要使用ADSI来操作IIS,但是此时我们不再需要GetObject这个东东了,因为.Net为我们提供了更加强大功能的新东东. System.DirectoryServices命名空间中包括了些强大的东东--DirectoryEntry,DirectoryEntries,它们为我们提供了访问活动目录的强大功能,在这

.Net中如何操作IIS的虚拟目录原理分析及实现方案_实用技巧

.Net中实际上已经为我们在这方面做得很好了.FCL中提供了不少的类来帮助我们完成这项工作,让我们的开发工作变非常简单和快乐.编程控制IIS实际上很简单,和ASP一样,.Net中需要使用ADSI来操作IIS,但是此时我们不再需要GetObject这个东东了,因为Net为我们提供了更加强大功能的新东东. System.DirectoryServices命名空间中包括了些强大的东东--DirectoryEntry, DirectoryEntries,它们为我们提供了访问活动目录的强大功能,在这些类允

如何在IIS 7.0中配置ASP.NET应用程序

如果 ASP.NET Web 应用程序以 IIS 7.0 为宿主,则可以用多种方式为该应用程序进行配置设置.这包括: 使用 IIS 管理器. 直接编辑 Web.config 文件.可以在 Visual Studio 或 Visual Web Developer 中或通过使用文本编辑程序完成此任务. 使用 IIS 7.0 命令行工具 (Appcmd.exe).使用此实用工具,可以指定 IIS 配置设置和 Web 应用程序配置设置. 使用 Windows Management Instrumenta

IIS 6.0 中修改注册表自定义 Httperr.Log_win服务器

在 Windows 2003 Server 中.IIS 6.0 的日志记录比 IIS 5.0 要更强大和安全.我们可以通过设置日志文件的路径来将日志保存在其他地方.比如D盘.因为如果你的 IIS 服务器流量很大.那放在默认的C盘可能会大量占用硬盘空间. 比如我上次遇到的某台服务器日志竟然有9G多.呵呵. 但是关于 IIS 6.0 的错误记录文件.即 Httperr.log默认在 C:\Windows\system32\logfiles\ 目录中.通过 IIS 无法直接修改该文件的路径.但是我们可

asp.net部署在IIS.net4.0中和.net2.0中出现问题,是使用Jquery调用Webservice,可能是web.config的配置问题

问题描述 .net2.0中的错误信息.net4.0中的错误信息折腾了好久,发现web.config中有了这句,<runtime>......在.net2.0应用池中可用.net4.0中出现错误,去掉这句在.net4.0中可用.net2.0中出现错误.<?xmlversion="1.0"?><configuration><configSections><sectionname="log4net"type="