<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇開發語言培訓專區Microsoft.NET Framework → 利用C#創建 IIS 站點并設置.NET Framework版本為ASP.NET 2.0 的方法 一


      共有5734人關注過本帖樹形打印

    主題:利用C#創建 IIS 站點并設置.NET Framework版本為ASP.NET 2.0 的方法 一

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    利用C#創建 IIS 站點并設置.NET Framework版本為ASP.NET 2.0 的方法 一  發帖心情 Post By:2010-12-15 8:43:44

    IIS 6.0以后使用MetaBase.xml存儲IIS信息,因此,可以直接修改這個文件即可。

    代碼如下: 很顯然,這種方法比較復雜,不直觀,而且需要停止IIS,影響現有網站。

    /// <summary>
    /// 本方法創建一個站點(當然,創建虛擬目錄也完全沒有任何問題,做法類似),并設置IIS中ASP.NET版本為2.0
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
    //站點名稱和物理路徑
    String webSiteName = "mengxianhui";
    String pathToRoot = @"c:\mengxianhui";
    DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");// Find unused ID value for new web site
    int siteID = 1;
    //得到現有的站點標識
    foreach (DirectoryEntry entry in root.Children)
    {
    if (entry.SchemaClassName == "IIsWebServer")
    {
    int ID = Convert.ToInt32(entry.Name);

    if (ID >= siteID)
    {
    siteID = ID + 1;
    }
    }
    }

    //利用配置文件的做法創建站點,需要先停止原來的服務,以便能夠順利寫入數據
    label1.Text = "正在停止服務……";
    Application.DoEvents();
    System.ServiceProcess.ServiceController mobServiceController3 = new System.ServiceProcess.ServiceController("IISAdmin");
    foreach (System.ServiceProcess.ServiceController dependentService in mobServiceController3.DependentServices)
    {
    switch (dependentService.Status)
    {
    case ServiceControllerStatus.Stopped:
    break;

    case ServiceControllerStatus.StopPending:
    dependentService.WaitForStatus(ServiceControllerStatus.Stopped);
    break;

    default:
    dependentService.Stop();
    dependentService.WaitForStatus(ServiceControllerStatus.Stopped);
    break;
    }

    }
    if (mobServiceController3.Status != ServiceControllerStatus.Stopped)
    {
    mobServiceController3.Stop();
    mobServiceController3.WaitForStatus(ServiceControllerStatus.Stopped);
    }
    //確保服務完全停止
    label1.Text = "停止服務完成!";
    Application.DoEvents();
    String ConfigPath = System.Environment.SystemDirectory + @"\inetsrv\MetaBase.xml";
    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
    doc.Load(ConfigPath);

    System.Xml.XmlNamespaceManager xnm = new System.Xml.XmlNamespaceManager(doc.NameTable);
    xnm.AddNamespace("mxh", "urn:microsoft-catalog:XML_Metabase_V64_0");

    //得到最大的網站的標識,要在其后面加入節點
    string SiteLocation = "/LM/W3SVC/" + (siteID - 1);
    System.Xml.XmlNode LastWebServer = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsWebVirtualDir[@Location='" + SiteLocation + "/root']", xnm);
    if (LastWebServer == null)
    {
    MessageBox.Show("沒有現有的 Web 服務器。");
    doc = null;
    return;
    }

    //找到AdminACL設置,每次都是變化的 -_-!
    System.Xml.XmlNode LastWebServerFilter = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsFilters[@Location='" + SiteLocation + "/filters']/@AdminACL", xnm);
    if (LastWebServer == null)
    {
    MessageBox.Show("沒有現有的 Web 服務器 filters。");
    doc = null;
    return;
    }

    String LastWebServerFilterAdminAcl = LastWebServerFilter.Value;

    //創建新站點
    label1.Text = "創建新站點……";
    Application.DoEvents();
    String NewSiteID = "/LM/W3SVC/" + siteID.ToString();
    System.Xml.XmlNode NewWebServer = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebServer", "urn:microsoft-catalog:XML_Metabase_V64_0");
    System.Xml.XmlAttribute NewWebServerLocation = doc.CreateAttribute("Location");
    NewWebServerLocation.Value = NewSiteID;
    NewWebServer.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AuthFlags");
    NewWebServerLocation.Value = "0";
    NewWebServer.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("ServerAutoStart");
    NewWebServerLocation.Value = "TRUE";
    NewWebServer.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("ServerBindings");
    NewWebServerLocation.Value = ":802:";
    NewWebServer.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("ServerComment");
    NewWebServerLocation.Value = webSiteName;
    NewWebServer.Attributes.Append(NewWebServerLocation);
    LastWebServer.ParentNode.InsertAfter(NewWebServer, LastWebServer);

    System.Xml.XmlNode NewWebServerFilter = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsFilters", "urn:microsoft-catalog:XML_Metabase_V64_0");
    NewWebServerLocation = doc.CreateAttribute("Location");
    NewWebServerLocation.Value = NewSiteID + "/filters";
    NewWebServerFilter.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AdminACL");
    NewWebServerLocation.Value = LastWebServerFilterAdminAcl;
    NewWebServerFilter.Attributes.Append(NewWebServerLocation);

    NewWebServer.ParentNode.InsertAfter(NewWebServerFilter, NewWebServer);

    System.Xml.XmlNode IIsWebVirtualDir = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebVirtualDir", "urn:microsoft-catalog:XML_Metabase_V64_0");
    NewWebServerLocation = doc.CreateAttribute("Location");
    NewWebServerLocation.Value = NewSiteID + "/root";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AccessFlags");
    NewWebServerLocation.Value = "AccessRead | AccessScript";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AppFriendlyName");
    NewWebServerLocation.Value = "默認應用程序";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AppIsolated");
    NewWebServerLocation.Value = "2";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AppRoot");
    NewWebServerLocation.Value = NewSiteID + "/Root";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("AuthFlags");
    NewWebServerLocation.Value = "AuthAnonymous | AuthNTLM";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    //關于權限,可以任意組合
    NewWebServerLocation = doc.CreateAttribute("DirBrowseFlags");
    NewWebServerLocation.Value = "DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc";
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerLocation = doc.CreateAttribute("Path");
    NewWebServerLocation.Value = pathToRoot;
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    //為安全起見,下面的系統文件夾需要使用程序的方法獲取,如System.Environment.SystemDirectory,和System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
    //這里為了簡單期間,直接寫入
    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";

    NewWebServerLocation = doc.CreateAttribute("ScriptMaps");
    NewWebServerLocation.Value = ScriptMaps;
    IIsWebVirtualDir.Attributes.Append(NewWebServerLocation);

    NewWebServerFilter.ParentNode.InsertAfter(IIsWebVirtualDir, NewWebServerFilter);
    doc.Save(ConfigPath);
    doc = null;

    label1.Text = "創建站點完成!";
    mobServiceController3 = null;
    mobServiceController3 = new System.ServiceProcess.ServiceController("w3svc");
    mobServiceController3.Start();
    mobServiceController3.WaitForStatus(ServiceControllerStatus.Running);
    mobServiceController3 = null;
    label1.Text = "恭喜你,全部工作完成!";
    MessageBox.Show("恭喜你,全部工作完成!");
    }

    支持(0中立(0反對(0單帖管理 | 引用 | 回復 回到頂部

    返回版面帖子列表

    利用C#創建 IIS 站點并設置.NET Framework版本為ASP.NET 2.0 的方法 一








    簽名
    主站蜘蛛池模板: 精品无码日韩一区二区三区不卡| 久久精品免费一区二区喷潮| 色综合五月婷婷| 在线免费你懂的| 久久久久久国产精品免费无码| 桃子视频观看免费完整| 国产在亚洲线视频观看| 国产成人av一区二区三区在线| 国产欧美日韩亚洲一区二区三区 | 亚洲一区二区三区国产精品无码| 男人天堂999| 国产免费怕怕免费视频观看| 97国产在线公开免费观看| 强行扒开双腿猛烈进入免费视频| 国产男女猛视频在线观看| 一边摸一边揉一边做视频| 日日夜夜嗷嗷叫| 亚洲国产成人精品无码区在线网站| 深夜福利视频导航| 四虎影永久在线观看网址| 野花社区在线播放| 国产精品成熟老女人视频| 一本加勒比HEZYO无码专区| 无码人妻av一区二区三区蜜臀| 亚洲午夜一区二区三区| 欧美激情在线一区二区三区| 刺激videoschina偷拍| 羞羞漫画页面免费入口欢迎你| 国产真实乱子伦视频播放| a级国产乱理伦片| 妞干网2018| 久久久久亚洲AV成人无码| 日韩午夜伦y4480私人影院| 亚洲最大中文字幕无码网站| 波多野结衣电影免费在线观看 | 久久99国产精品成人欧美| 日韩三级免费观看| 亚洲国产精品白丝在线观看 | 久久一区不卡中文字幕| 日本猛妇色xxxxx在线| 亚洲人成未满十八禁网站|