设为首页 收藏本站
查看: 870|回复: 0

[经验分享] 利用活动目录配置IIS(一)

[复制链接]

尚未签到

发表于 2015-8-16 11:26:19 | 显示全部楼层 |阅读模式
数字报纸程序终于告一段落了。这是个基于Asp.Net的Web程序,我在网上发现很多朋友在问如何用代码来配置一个网站。正好我的这个程序中所有的配置都是用代码来配置的。在这就把代码分享出来,并做简介要的说明。

主要包括以下几个内容:
新建网站。(设置网站的主机头,设置网站的各种属性)
新建虚拟目录。
设置IIS虚拟目录的NET运行时版本。
给指定目录添加Asp.net  NetWorkServie帐户。
代码修改Mini类型。


1.   活动目录编程简介.
     活动目录为分布式编程提供了一个统一的编程接口. 在Net下活动目录的主要API在System.DirectoryServices;命名空间下. 

2.  用活动目录创建站点.

首先要实例化一个指个IIS服务器的DirectoryEntry对象.

           string IIServerPath = "IIS://localhost/W3SVC";  //IIS服务器的路径

            string TargetIIServerPath = IIServerPath + "/" + W3SVCId; //要创建的网站ID


            if (DirectoryEntry.Exists(TargetIIServerPath)) //如果已经存在

            {

                TargetIIServer = new DirectoryEntry(TargetIIServerPath);

                #region  站点访问方式设置

              //设置网站的身份验证方式,在这为 启用匿名访问,集成Windows身份

                TargetIIServer.Properties["AuthFlags"].Value = 0x00000004 | 0x00000001;

                TargetIIServer.Properties["ServerAutoStart"].Value = "TRUE";

                TargetIIServer.CommitChanges();



                DirectoryEntry website = new DirectoryEntry(TargetIIServerPath + "/Root");

                website.Properties["AuthFlags"].Value = 0x00000004 | 0x00000001;

                website.Properties["AccessFlags"].Value = 0x00000001 | 0x00000002 | 0x00000200;

        

            

                website.CommitChanges();


                #endregion


            }

            else

            {


                System.Xml.XmlNodeList headlist = doc.SelectNodes("/WebSite/HostLHeads/HostHead");

                object[] headlistName = new object[headlist.Count+1];

                headlistName[0] = "127.0.0.1:80:127.0.0.1";

                for (int i = 1; i < headlistName.Length; i++)

                {

                    headlistName = (object)headlist[i-1].Attributes["name"].Value;

                }


                IISServer = new DirectoryEntry(IIServerPath);

               //为新建Web站点准备参数    :站点名称,主机头,主目录路径

                object[] newsite = new object[] { ServerComment, headlistName, MainCatalog };

               //回调Com对象,新建Web站点

                object websiteId = (object)IISServer.Invoke("CreateNewSite", newsite);


                (doc.SelectSingleNode("/WebSite") as XmlElement).SetAttribute("WebSiteID", websiteId.ToString());

         

3.  新建目录


   private static DirectoryEntry ConfigPaper(string VirName, string Path)

        {

            DirectoryEntry rootsite = ConfigWebSite();

            DirectoryEntry NewVir = null;

            if (!DirectoryEntry.Exists(rootsite.Path + "/Root/" + VirName ))

            {

                DirectoryEntry site = new DirectoryEntry(rootsite.Path + "/" + "Root");

                NewVir = site.Children.Add(VirName, "IIsWebVirtualDir");

                object[] objs = new object[] { true };

               //回调Com对象,新建虚拟目录.(要IIS6.0以上版本)

                NewVir.Invoke("AppCreate", objs);

                NewVir.Properties["AppFriendlyName"][0] = VirName;

                if (!System.IO.Directory.Exists(Path))

                {

                    System.IO.Directory.CreateDirectory(Path);

                }

                NewVir.Properties["Path"].Value = Path;


                NewVir.CommitChanges();


            }

            else

            {

                NewVir = new DirectoryEntry(rootsite.Path + "/Root/" + VirName);

            }

            return NewVir;

        }


4 设置IIS虚拟目录的NET运行时版本。
设置运行时版本我在这用的是利用aspnet_regiis.exe工具
  System.DirectoryServices.DirectoryEntry AD = TargetIIServer;

                string aspnetRegIIS20 = System.IO.Path.Combine(Environment.GetEnvironmentVariable("windir"), @"Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe");


                System.Diagnostics.Process p = new System.Diagnostics.Process();

                p.StartInfo = new System.Diagnostics.ProcessStartInfo();

                p.StartInfo.FileName = aspnetRegIIS20;

                string arg = AD.Path.ToUpper();

                arg = arg.Substring(arg.IndexOf("W3SVC"));


                p.StartInfo.Arguments = "-s  " + arg;

                p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

                p.Start();



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99708-1-1.html 上篇帖子: iis网站右键-浏览没反应的解决方法 下篇帖子: Thread abrot IIS 线程中止和IIS的关系
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表