#region ScriptMaps
            string ScriptMaps = @".asp,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
.cer,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
.cdx,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
.asa,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE
.idc,C:\WINDOWS\system32\inetsrv\httpodbc.dll,5,GET,POST
.shtm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
.shtml,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
.stm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST
.asax,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ascx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ashx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.asmx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.aspx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.axd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.vsdisco,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.rem,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.soap,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.config,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.cs,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.csproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vbproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.webinfo,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.licx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.resources,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.xoml,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.rules,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.master,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.skin,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.compiled,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.browser,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.mdb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.jsl,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.vjsproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sitemap,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.msgx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.ad,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.dd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.cd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.adprototype,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.lddprototype,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sdm,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.sdmDocument,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.svc,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG
.mdf,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.ldf,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.java,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.exclude,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG
.refresh,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG";            String[] ScriptMapsList = System.Text.RegularExpressions.Regex.Split(ScriptMaps, "\r\n");
            #endregion
            const int MD_ACCESS_READ = 0x00000001; //Allow read access.
            const int MD_ACCESS_SCRIPT = 0x00000200; // Allow script execution.
            string appName = "CLNS";
            string domain = "www.clnstest.com.cn";
            string path = "C://CLNS";
            string hz = "";            //创建应用程序池
            DirectoryEntry apppools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");
            //找出是否存在
            DirectoryEntry appPool = null;
            foreach (DirectoryEntry a in apppools.Children)
            {
                if (a.Name == appName)
                {
                    appPool = a;
                    break;
                }
            }
            if (appPool == null)
            {
                //如果不存在则进行创建
                appPool = apppools.Children.Add(appName, "IIsApplicationPool");
            }
            appPool.Properties["AppPoolIdentityType"][0] = "2"; //网络用户
            appPool.Properties["IdleTimeout"][0] = 0;   //不超时
            appPool.Properties["MaxProcesses"][0] = 5;  //5进程
            appPool.CommitChanges();
            //创建网站
            DirectoryEntry Service = new DirectoryEntry("IIS://localhost/W3SVC");
            DirectoryEntry Server;
            //生成网站标示
            int maxID = 0;
            IEnumerator ie = Service.Children.GetEnumerator();
            //删除原有
            while (ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if (Server.SchemaClassName == "IIsWebServer")
                {
                    if (Server.Properties["ServerComment"][0].ToString().ToLower() == domain)
                    {
                        Service.Children.Remove(Server);
                        Service.CommitChanges();
                    }
                }
            }
            ie = Service.Children.GetEnumerator();
            while (ie.MoveNext())
            {
                Server = (DirectoryEntry)ie.Current;
                if (Server.SchemaClassName == "IIsWebServer")
                {
                    if (Convert.ToInt32(Server.Name) > maxID)
                        maxID = Convert.ToInt32(Server.Name);
                }
            }
            maxID++;            Server = Service.Children.Add(maxID.ToString(), "IIsWebServer");
            Server.Properties["ServerComment"][0] = domain;
            Server.Properties["AccessScript"][0] = true;    //脚本支持
            Server.Properties["AccessRead"][0] = true;  //读取
            Server.Properties["EnableDirBrowsing"][0] = false;  //目录浏览
            Server.Properties["DefaultDoc"][0] = "Index.aspx,Index.html";   //默认文档
            Server.Properties["EnableDefaultDoc"][0] = true;    //启用默认文档
            Server.Properties["AccessSSL"][0] = false;  //SSL
            Server.Properties["AuthAnonymous"][0] = true;  //启用匿名登录
            Server.Properties["AuthNTLM"][0] = true;  //集成Windows身份验证             
            var ip = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[0].ToString();
            Server.Properties["ServerBindings"].Add(ip + ":80:" + domain);            Server.CommitChanges();
            DirectoryEntry root = Server.Children.Add("Root", "IIsWebVirtualDir");
            root.Properties["Path"][0] = path + "\\AVA.ResourcesPlatform.WebUI" + hz;
            root.Properties["AccessFlags"][0] = MD_ACCESS_READ | MD_ACCESS_SCRIPT;
            root.Properties["ScriptMaps"].Value = ScriptMapsList;
            root.Properties["AspEnableParentPaths"][0] = true;
            root.Properties["AppRoot"][0] = "LM/W3SVC/" + maxID + "/Root";
            root.Invoke("AppCreate", true);
            root.CommitChanges();
            //注意:AppFriendlyName必须放在root.Invoke("AppCreate", true);root.CommitChanges();之后。
            root.Properties["AppFriendlyName"][0] = domain;
            root.CommitChanges();
            object[] param = { 0, appName, true };
            root.Invoke("AppCreate3", param);
            Server.Invoke("start", new object[0]);
            Service.CommitChanges();创建的应用程序名后打开网站
显示:

服务器应用程序不可用 
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。 

然后我重新进入网站属性的“主目录”,把创建好的应用程序名删除了,重新手动创建就可以了是怎么回事
代码哪里出错了谢谢

解决方案 »

  1.   

    我把Windws的事件查看器全都删除了,然后做我添加的操作
    日志里面并没有什么能看得出谢谢
      

  2.   

    没说你添加的时候看日志,让你在显示
    服务器应用程序不可用
    您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。 
    的时候看日志
      

  3.   

    日志中“安全性”多出了三条记录,但都是“审核成功”,其他两个日志没有变化
    是不是用代码创建的用户权限不对啊?
    但不可能啊,我运行程序的用户是Administrator
    谢谢
      

  4.   

    我测试了下是没有问题的,可能你的程序.net版本和iis设置的不一致吧?
      

  5.   

    是不是我装了.NET1.1, .NET2.0, .NET3.5 .NET4.0的原因呢?
    那在IIS的时候怎么去指明是哪一个版本呢?
    谢谢