C# ServerManager IIs 7

本文介绍了一个使用C#编写的IIS自动安装程序,通过控制台实现创建站点、应用池、虚拟目录等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.http://www.lob.cn/jq/csyy/7285.shtml

2.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Web.Administration;

namespace IIS自动安装程序_控制台版v1._0_20100727_zch
{
    public class IIS7Core1
    {
        /// <summary>
        /// 创建站点
        /// </summary>
        /// <param name="siteName">站点名称</param>
        /// <param name="bindingInfo">绑定<example>"*:80:myhost.com"</example></param>
        /// <param name="physicalPath">物理路径</param>
        /// <param name="pathToResourceFile">资源路径</param>
        /// <param name="pathTo公用上传">资源路径</param>
        /// <param name="password">FileUser密码</param>
        /// <param name="defaultDocName">默认首页</param>
        public static void Create(string siteName, string bindingInfo, string physicalPath, string pathToResourceFile, string pathTo公用上传, string password, string defaultDocName)
        {
            //Delete an existent web site.
            ServerManager iisManager = new ServerManager();
            Site site = iisManager.Sites[siteName];
            if (site != null)
            {
                iisManager.Sites.Remove(site);
                iisManager.CommitChanges();
            }

            //Delete an existent web site app pool.
            iisManager = new ServerManager();
            ApplicationPool oldpool = iisManager.ApplicationPools[siteName + "Pool"];
            if (oldpool != null)
            {
                iisManager.ApplicationPools.Remove(oldpool);
                iisManager.CommitChanges();
            }

            iisManager = new ServerManager();
            //创建站点
            iisManager.Sites.Add(siteName, "http", bindingInfo, physicalPath);
            if (true)
            {
                //创建应用程序池
                ApplicationPool pool = iisManager.ApplicationPools.Add(siteName + "Pool");

                //设置应用程序池标识
                pool.ProcessModel.IdentityType = ProcessModelIdentityType.ApplicationPoolIdentity;

                //if (!String.IsNullOrEmpty(appPoolUserName))
                //{
                //    pool.ProcessModel.UserName = appPoolUserName;
                //    pool.ProcessModel.Password = appPoolPassWord;
                //}

                //设置应用程序池的托管管道模式
                pool.ManagedPipelineMode = ManagedPipelineMode.Classic;

                //设置应用程序池的.net版本
                pool.ManagedRuntimeVersion = "v4.0";

                //设置应用程序池的名称
                iisManager.Sites[siteName].Applications["/"].ApplicationPoolName = pool.Name;
            }
            //将一个应用程序(Application)添加到一个站点
            //iisManager.Sites[siteName].Applications.Add("/" + siteName, physicalPath);

            //建立虚拟目录(Virtual Directory)
            Application app = iisManager.Sites[siteName].Applications[0];

            if (siteName.ToLower().Contains("web"))
            {
                //虚拟目录
                app.VirtualDirectories.Add("/ResourceFile", pathToResourceFile);
                app.VirtualDirectories.Add("/UploadCenter", pathTo公用上传);
                app.VirtualDirectories.Add("/UploadFile", pathTo公用上传);

                //设置每个虚拟目录的认证
                app.VirtualDirectories["/ResourceFile"].UserName = "FileUser";
                app.VirtualDirectories["/ResourceFile"].Password = password;
                app.VirtualDirectories["/UploadCenter"].UserName = "FileUser";
                app.VirtualDirectories["/UploadCenter"].Password = password;
                app.VirtualDirectories["/UploadFile"].UserName = "FileUser";
                app.VirtualDirectories["/UploadFile"].Password = password;

            }
            else if (siteName.ToLower().Contains("sdzn"))
            {
                app.VirtualDirectories.Add("/Upload", pathTo公用上传);

                app.VirtualDirectories["/Upload"].UserName = "FileUser";
                app.VirtualDirectories["/Upload"].Password = password;
            }
            else//wcf
            {
                app.VirtualDirectories.Add("/ResourceFile", pathToResourceFile);
                app.VirtualDirectories.Add("/UploadFile", pathTo公用上传);

                app.VirtualDirectories["/ResourceFile"].UserName = "FileUser";
                app.VirtualDirectories["/ResourceFile"].Password = password;
                app.VirtualDirectories["/UploadFile"].UserName = "FileUser";
                app.VirtualDirectories["/UploadFile"].Password = password;
            }
            iisManager.CommitChanges();

            //在站点上添加默认文档
            iisManager = new ServerManager();
            Configuration cfg = iisManager.GetWebConfiguration(siteName);
            ConfigurationSection defaultDocumentSection = cfg.GetSection("system.webServer/defaultDocument");
            ConfigurationElement filesElement = defaultDocumentSection.GetChildElement("files");
            ConfigurationElementCollection filesCollection = filesElement.GetCollection();

            foreach (ConfigurationElement elt in filesCollection)
            {
                if (elt.Attributes["value"].Value.ToString() == defaultDocName)
                {
                    return;
                }
            }

            try
            {
                ConfigurationElement docElement = filesCollection.CreateElement();
                docElement.SetAttributeValue("value", defaultDocName);
                filesCollection.Add(docElement);
            }
            catch (Exception) { }   //this will fail if existing


            iisManager.CommitChanges();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值