BK网络学院

首页搜索登录
首页业界网页平面多媒体程序数据库办公工具服务器系统网络安全站长认证壁纸
加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索

C#程序自动创建IIS网站虚拟目录及应用池等

[日期:2013-03-01] 作者: 来源: [字体: ]

在打包ASP.net网站安装程序时,我们使用C#来控制IIS新建网站虚拟目录、设置目录属性并创建应用池、设置应用池属性等。代码兼容IIS6及IIS7,如下:

注:本文用到的功能类及函数参见:

 

/// <summary>

    /// 创建网站

    /// </summary>

    /// <param name="siteInfo"></param>

      public  void CreateNewWebSite(NewWebSiteInfo siteInfo)

        {

            if (!EnsureNewSiteEnavaible(siteInfo.BindString))

            {

                throw new Exception("该网站已存在" + Environment.NewLine + siteInfo.BindString);

            }

            DirectoryEntry rootEntry = GetDirectoryEntry(entPath);

 

            newSiteNum = GetNewWebSiteID();

            DirectoryEntry newSiteEntry = rootEntry.Children.Add(newSiteNum, "IIsWebServer");

            newSiteEntry.CommitChanges();

 

            newSiteEntry.Properties["ServerBindings"].Value = siteInfo.BindString;

            newSiteEntry.Properties["ServerComment"].Value = siteInfo.CommentOfWebSite;

            newSiteEntry.CommitChanges();

            DirectoryEntry vdEntry = newSiteEntry.Children.Add("root", "IIsWebVirtualDir");

            vdEntry.CommitChanges();

            string ChangWebPath = siteInfo.WebPath.Trim().Remove(siteInfo.WebPath.Trim().LastIndexOf('\\'),1);

            vdEntry.Properties["Path"].Value = ChangWebPath;

 

 

            vdEntry.Invoke("AppCreate", true);//创建应用程序

 

            vdEntry.Properties["AccessRead"][0] = true; //设置读取权限

            vdEntry.Properties["AccessWrite"][0] = true;

            vdEntry.Properties["AccessScript"][0] = true;//执行权限

            vdEntry.Properties["AccessExecute"][0] = false;

            vdEntry.Properties["DefaultDoc"][0] = "Login.aspx";//设置默认文档

            vdEntry.Properties["AppFriendlyName"][0] = "LabManager"; //应用程序名称          

            vdEntry.Properties["AuthFlags"][0] = 1;//0表示不允许匿名访问,1表示就可以3为基本身份验证,7为windows继承身份验证

            vdEntry.CommitChanges();

 

            //操作增加MIME

            //IISOle.MimeMapClass NewMime = new IISOle.MimeMapClass();

            //NewMime.Extension = ".xaml"; NewMime.MimeType = "application/xaml+XML";

            //IISOle.MimeMapClass TwoMime = new IISOle.MimeMapClass();

            //TwoMime.Extension = ".xap"; TwoMime.MimeType = "application/x-silverlight-app";

            //rootEntry.Properties["MimeMap"].Add(NewMime);

            //rootEntry.Properties["MimeMap"].Add(TwoMime);

            //rootEntry.CommitChanges();

 

            #region 针对IIS7

            DirectoryEntry getEntity = new DirectoryEntry("IIS://localhost/W3SVC/INFO");

            int Version =int.Parse(getEntity.Properties["MajorIISVersionNumber"].Value.ToString());

            if (Version > 6)

            {

                #region 创建应用程序池

                string AppPoolName = "LabManager";

                if (!IsAppPoolName(AppPoolName))

                {

                    DirectoryEntry newpool;

                    DirectoryEntry appPools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");

                    newpool = appPools.Children.Add(AppPoolName, "IIsApplicationPool");

                    newpool.CommitChanges();

                }

                #endregion

 

                #region 修改应用程序的配置(包含托管模式及其NET运行版本)

                ServerManager sm = new ServerManager();

                sm.ApplicationPools[AppPoolName].ManagedRuntimeVersion = "v4.0";

                sm.ApplicationPools[AppPoolName].ManagedPipelineMode = ManagedPipelineMode.Classic; //托管模式Integrated为集成 Classic为经典

                sm.CommitChanges();

                #endregion

 

                vdEntry.Properties["AppPoolId"].Value = AppPoolName;

                vdEntry.CommitChanges();

            }

            #endregion

 

 

            //启动aspnet_regiis.exe程序 

            string fileName = Environment.GetEnvironmentVariable("windir") + @"\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe";

            ProcessStartInfo startInfo = new ProcessStartInfo(fileName);

            //处理目录路径 

            string path = vdEntry.Path.ToUpper();

            int index = path.IndexOf("W3SVC");

            path = path.Remove(0, index);

            //启动ASPnet_iis.exe程序,刷新脚本映射 

            startInfo.Arguments = "-s " + path;

            startInfo.WindowStyle = ProcessWindowStyle.Hidden;

            startInfo.UseShellExecute = false;

            startInfo.CreateNoWindow = true;

            startInfo.RedirectStandardOutput = true;

            startInfo.RedirectStandardError = true;

            Process process = new Process();

            process.StartInfo = startInfo;

            process.Start();

            process.WaitForExit();

            string errors = process.StandardError.ReadToEnd();

            if (errors != string.Empty)

            {

                throw new Exception(errors);

            }

 

        }

 

//类及属性:

string entPath = String.Format("IIS://{0}/w3svc", "localhost");

 

public  DirectoryEntry GetDirectoryEntry(string entPath)

       {

           DirectoryEntry ent = new DirectoryEntry(entPath);

           return ent;

       }

 

        public class NewWebSiteInfo

        {

            private string hostIP;   // 主机IP

            private string portNum;   // 网站端口号

            private string descOfWebSite; // 网站表示。一般为网站的网站名。例如"www.dns.com.cn"

            private string commentOfWebSite;// 网站注释。一般也为网站的网站名。

            private string webPath;   // 网站的主目录。例如"e:\ mp"

 

            public NewWebSiteInfo(string hostIP, string portNum, string descOfWebSite, string commentOfWebSite, string webPath)

            {

                this.hostIP = hostIP;

                this.portNum = portNum;

                this.descOfWebSite = descOfWebSite;

                this.commentOfWebSite = commentOfWebSite;

                this.webPath = webPath;

            }

 

            public string BindString

            {

                get

                {

                    return String.Format("{0}:{1}:{2}", hostIP, portNum, descOfWebSite); //网站标识(IP,端口,主机头值)

                }

            }

 

            public string PortNum

            {

                get

                {

                    return portNum;

                }

            }

 

            public string CommentOfWebSite

            {

                get

                {

                    return commentOfWebSite;

                }

            }

 

            public string WebPath

            {

                get

                {

                    return webPath;

                }

            }

        }

关键词:IIS  网站  应用池  C# 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (1)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 匿名 发表于 2016/12/24 17:49:34
http://www.blue1000.com/bkhtml/c17/2013-03/71088.htm 2016年度基层党建工作公开承诺书 http://www.blue1000.com/show/8627.html 2016年区委书记抓基层党建工作公开承诺书 http://www.blue1000.com/show/8626.html