asp.net 程式IIS自動部署問題

來源:互聯網
上載者:User

asp教程.net 程式IIS自動部署問題
建立虛擬目錄的經過以下步驟:

  1)擷取該虛擬目錄的上級目錄的DirectoryEntry對象rootEntry;

  2)通過rootEntry的DirectoryEntry::Childrens.Add來添加該虛擬目錄;

  //建立虛擬目錄

  DirectoryEntryentry=rootEntry.Children.Add(this.m_strAlias,"IIsWebVirtualDir");

  3)更新該虛擬目錄的屬性,如更新身分識別驗證模式,存取權限和所對應的物理目錄等。需要注意的是,使用DirectoryEntry來建立虛擬目錄,只能在該虛擬目錄建立了以後,才能設定物理目錄等屬性。

  建立虛擬目錄的代碼如下:

///<summary>
    ///建立iis虛擬目錄
    ///</summary>
    ///<excepti>虛擬目錄操作異常</exception>
   publicoverridevoidCreateDirectory()
   {
     //已不覆蓋的方式建立虛擬目錄,當虛擬目錄存在時拋出異常
      this.CreateDirectory(false);
    }

    ///<summary>
    ///建立iis虛擬目錄
    ///</summary>
    ///<paramname="bReplace">是否覆蓋掉原有的虛擬目錄</param>
    ///<excepti>虛擬目錄操作異常</exception>
    publicoverridevoidCreateDirectory(boolbReplace)
    {
      //判斷目錄是否存在
      if(this.Exist())
      {
        if(bReplace)
        {
          //若允許覆蓋則先刪除原有的虛擬目錄
          this.DeleteDirectory();
        }
        else
        {
          //若不允許覆蓋直接拋出目錄已存在的異常
          DirectoryException.Throw("directoryalreadyexist");
        }
      }

      try
      {
        //擷取上級目錄的DirectoryEntry對象
        DirectoryEntryrootEntry=SystemDirectory.GetParentEntry(this);
        //建立虛擬目錄
   DirectoryEntryentry=rootEntry.Children.Add(this.m_strAlias,"IIsWebVirtualDir");
        entry.Invoke("AppCreate",true);
        entry.CommitChanges();
        rootEntry.CommitChanges();

        //更新虛擬目錄屬性
        SystemDirectory.UpdateEntry(entry,this.Property);
     }
      catch(System.Exceptionex)
      {
        DirectoryException.Throw(ex.Message);
      }
    }


DirectoryEntry的commitChanges方法用於提交DirectoryEntry的操作。line41中的提交了以後,該虛擬目錄才能建立,然後在進行更新虛擬目錄的屬性的操作。若沒有commitChanges就進行更新操作,會拋出找不到虛擬目錄的異常,有興趣的朋友可以試試。

  2、刪除虛擬目錄:

  刪除虛擬目錄比較簡單,只需調用虛擬目錄的父節點的DirectoryEntry對象的Delete操作就可以了,需要注意的是Delete對象需要兩個參數:子節點的Alias和子節點的類型(虛擬目錄節點的類型為IIsWebVirtualDir)。

///<summary>
    ///刪除iis虛擬目錄
    ///</summary>
    ///<excepti>虛擬目錄操作異常</exception>
    publicoverridevoidDeleteDirectory()
    {
      //判斷目錄是否存在
      if(!this.Exist())
      {
        //若待刪除的虛擬目錄不存在,則拋出異常
       DirectoryException.Throw("directorydoesnotexist");
      }

      try
      {
        //擷取上級目錄的DirectoryEntry對象
        DirectoryEntryrootEntry=SystemDirectory.GetParentEntry(this);
        //刪除參數
        object[]objParams=newobject[2];;
        objParams[0]="IIsWebVirtualDir";
        objParams[1]=this.m_strAlias;
        //刪除虛擬目錄
        rootEntry.Invoke("Delete",objParams);
        rootEntry.CommitChanges();
      }
      catch(System.Exceptionex)
      {
        DirectoryException.Throw(ex.Message);
      }
      
    }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.