欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用C#操縱IIS(代碼)

 更新時(shí)間:2007年03月09日 00:00:00   作者:  

using System; 
using System.DirectoryServices; 
using System.Collections; 
using System.Text.RegularExpressions; 
using System.Text; 
/** 
 * @author 吳海燕 
 * @email  wuhy80-usual@yahoo.com 
 * 2004-6-25 第一版 
 */  
namespace Wuhy.ToolBox 

     /// <summary> 
     ///  這個(gè)類(lèi)是靜態(tài)類(lèi)。用來(lái)實(shí)現(xiàn)管理IIS的基本操作。 
     ///  管理IIS有兩種方式,一是ADSI,一是WMI。由于系統(tǒng)限制的原因,只好選擇使用ADSI實(shí)現(xiàn)功能。 
     ///  這是一個(gè)遺憾。只有等到只有使用IIS 6的時(shí)候,才有可能使用WMI來(lái)管理系統(tǒng) 
     ///  不過(guò)有一個(gè)問(wèn)題就是,我現(xiàn)在也覺(jué)得這樣的一個(gè)方法在本地執(zhí)行會(huì)比較的好。最好不要遠(yuǎn)程執(zhí)行。 
     ///  因?yàn)槟菢有枰加孟喈?dāng)數(shù)量的帶寬,即使要遠(yuǎn)程執(zhí)行,也是推薦在同一個(gè)網(wǎng)段里面執(zhí)行 
     /// </summary> 
     public class IISAdminLib 
     { 
          #region UserName,Password,HostName的定義 
         public static string HostName 
         { 
              get 
              { 
                   return hostName; 
              } 
              set 
              { 
                   hostName = value; 
              } 
         } 
         public static string UserName 
         { 
              get 
              { 
                   return userName; 
              } 
              set 
              { 
                   userName = value; 
              } 
         } 
         public static string Password 
         { 
              get 
              { 
                   return password; 
              } 
              set 
              { 
                   if(UserName.Length <= 1) 
                   { 
                       throw new ArgumentException("還沒(méi)有指定好用戶名。請(qǐng)先指定用戶名"); 
                   } 
                   password = value; 
              } 
         } 
         public static void RemoteConfig(string hostName, string userName, string password) 
         { 
              HostName = hostName; 
              UserName = userName; 
              Password = password; 
         } 
          private static string hostName = "localhost"; 
          private static string userName; 
          private static string password; 
          #endregion 
          #region 根據(jù)路徑構(gòu)造Entry的方法 
         /// <summary> 
         ///  根據(jù)是否有用戶名來(lái)判斷是否是遠(yuǎn)程服務(wù)器。 
         ///  然后再構(gòu)造出不同的DirectoryEntry出來(lái) 
         /// </summary> 
         /// <param name="entPath">DirectoryEntry的路徑</param> 
         /// <returns>返回的是DirectoryEntry實(shí)例</returns> 
         public static DirectoryEntry GetDirectoryEntry(string entPath) 
         { 
              DirectoryEntry ent; 
              if(UserName == null) 
              { 
                   ent = new DirectoryEntry(entPath); 
              } 
              else 
              { 
                   //    ent = new DirectoryEntry(entPath, HostName+"\\"+UserName, Password, AuthenticationTypes.Secure); 
                   ent = new DirectoryEntry(entPath, UserName, Password, AuthenticationTypes.Secure); 
              } 
              return ent; 
         } 
          #endregion 
          #region 添加,刪除網(wǎng)站的方法 
         /// <summary> 
         ///  創(chuàng)建一個(gè)新的網(wǎng)站。根據(jù)傳過(guò)來(lái)的信息進(jìn)行配置 
         /// </summary> 
         /// <param name="siteInfo">存儲(chǔ)的是新網(wǎng)站的信息</param> 
         public static void CreateNewWebSite(NewWebSiteInfo siteInfo) 
         { 
              if(! EnsureNewSiteEnavaible(siteInfo.BindString)) 
              { 
                   throw new DuplicatedWebSiteException("已經(jīng)有了這樣的網(wǎng)站了。" + Environment.NewLine + siteInfo.BindString); 
              } 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry rootEntry = GetDirectoryEntry(entPath); 
              string 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(); 
              vdEntry.Properties["Path"].Value = siteInfo.WebPath; 
              vdEntry.CommitChanges(); 
         } 
         /// <summary> 
         ///  刪除一個(gè)網(wǎng)站。根據(jù)網(wǎng)站名稱(chēng)刪除。 
         /// </summary> 
         /// <param name="siteName">網(wǎng)站名稱(chēng)</param> 
         public static void DeleteWebSiteByName(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              string rootPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry rootEntry = GetDirectoryEntry(rootPath); 
              rootEntry.Children.Remove(siteEntry); 
              rootEntry.CommitChanges(); 
         } 
          #endregion 
          #region Start和Stop網(wǎng)站的方法 
         public static void StartWebSite(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              siteEntry.Invoke("Start", new object[] {}); 
         } 
         public static void StopWebSite(string siteName) 
         { 
              string siteNum = GetWebSiteNum(siteName); 
              string siteEntPath = String.Format("IIS://{0}/w3svc/{1}", HostName, siteNum); 
              DirectoryEntry siteEntry = GetDirectoryEntry(siteEntPath); 
              siteEntry.Invoke("Stop", new object[] {}); 
         } 
          #endregion 
          #region 確認(rèn)網(wǎng)站是否相同 
         /// <summary> 
         ///  確定一個(gè)新的網(wǎng)站與現(xiàn)有的網(wǎng)站沒(méi)有相同的。 
         ///  這樣防止將非法的數(shù)據(jù)存放到IIS里面去 
         /// </summary> 
         /// <param name="bindStr">網(wǎng)站邦定信息</param> 
         /// <returns>真為可以創(chuàng)建,假為不可以創(chuàng)建</returns> 
         public static bool EnsureNewSiteEnavaible(string bindStr) 
         { 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                        if(child.Properties["ServerBindings"].Value != null) 
                       { 
                            if(child.Properties["ServerBindings"].Value.ToString() == bindStr) 
                            { 
                                 return false; 
                            } 
                       } 
                   } 
              } 
              return true; 
         } 
          #endregion 
          #region 獲取一個(gè)網(wǎng)站編號(hào)的方法 
         /// <summary> 
         ///  獲取一個(gè)網(wǎng)站的編號(hào)。根據(jù)網(wǎng)站的ServerBindings或者ServerComment來(lái)確定網(wǎng)站編號(hào) 
         /// </summary> 
         /// <param name="siteName"></param> 
         /// <returns>返回網(wǎng)站的編號(hào)</returns> 
         /// <exception cref="NotFoundWebSiteException">表示沒(méi)有找到網(wǎng)站</exception> 
         public static string GetWebSiteNum(string siteName) 
         { 
              Regex regex = new Regex(siteName); 
              string tmpStr; 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                        if(child.Properties["ServerBindings"].Value != null) 
                       { 
                            tmpStr = child.Properties["ServerBindings"].Value.ToString(); 
                            if(regex.Match(tmpStr).Success) 
                            { 
                                 return child.Name; 
                            } 
                       } 
                        if(child.Properties["ServerComment"].Value != null) 
                       { 
                            tmpStr = child.Properties["ServerComment"].Value.ToString(); 
                            if(regex.Match(tmpStr).Success) 
                            { 
                                 return child.Name; 
                            } 
                       } 
                   } 
              } 
              throw new NotFoundWebSiteException("沒(méi)有找到我們想要的站點(diǎn)" + siteName); 
         } 
          #endregion 
          #region 獲取新網(wǎng)站id的方法 
         /// <summary> 
         ///  獲取網(wǎng)站系統(tǒng)里面可以使用的最小的ID。 
         ///  這是因?yàn)槊總€(gè)網(wǎng)站都需要有一個(gè)唯一的編號(hào),而且這個(gè)編號(hào)越小越好。 
         ///  這里面的算法經(jīng)過(guò)了測(cè)試是沒(méi)有問(wèn)題的。 
         /// </summary> 
         /// <returns>最小的id</returns> 
         public static string GetNewWebSiteID() 
         { 
              ArrayList list = new ArrayList(); 
              string tmpStr; 
              string entPath = String.Format("IIS://{0}/w3svc", HostName); 
              DirectoryEntry ent = GetDirectoryEntry(entPath); 
              foreach(DirectoryEntry child in ent.Children) 
              { 
                   if(child.SchemaClassName == "IIsWebServer") 
                   { 
                       tmpStr = child.Name.ToString(); 
                        list.Add(Convert.ToInt32(tmpStr)); 
                   } 
              } 
              list.Sort(); 
              int i = 1; 
              foreach(int j in list) 
              { 
                   if(i == j) 
                   { 
                       i++; 
                   } 
              } 
              return i.ToString(); 
         } 
          #endregion 
     } 
     #region 新網(wǎng)站信息結(jié)構(gòu)體 
     public struct NewWebSiteInfo 
     { 
          private string hostIP;   // The Hosts IP Address 
          private string portNum;   // The New Web Sites Port.generally is "80" 
          private string descOfWebSite; // 網(wǎng)站表示。一般為網(wǎng)站的網(wǎng)站名。例如"www.dns.com.cn" 
          private string commentOfWebSite;// 網(wǎng)站注釋。一般也為網(wǎng)站的網(wǎng)站名。 
          private string webPath;   // 網(wǎng)站的主目錄。例如"e:\tmp" 
         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); 
              } 
         } 
         public string CommentOfWebSite 
         { 
              get 
              { 
                   return commentOfWebSite; 
              } 
         } 
         public string WebPath 
         { 
              get 
              { 
                   return webPath; 
              } 
         } 
     } 
     #endregion 

相關(guān)文章

  • C#處理MySql多個(gè)返回集的方法

    C#處理MySql多個(gè)返回集的方法

    這篇文章主要介紹了C#處理MySql多個(gè)返回集的方法,實(shí)現(xiàn)了對(duì)處理MySql多個(gè)返回集進(jìn)行封裝,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • SQL語(yǔ)句刪除和添加外鍵、主鍵的方法

    SQL語(yǔ)句刪除和添加外鍵、主鍵的方法

    本文將詳細(xì)介紹SQL語(yǔ)句刪除和添加外鍵、主鍵的方法,需要的朋友可以參考下
    2012-11-11
  • 在Winform動(dòng)態(tài)啟動(dòng)、控制臺(tái)命令行的方法

    在Winform動(dòng)態(tài)啟動(dòng)、控制臺(tái)命令行的方法

    winForm 程序輸出類(lèi)型為 windows 程序(不是命令行程序)在運(yùn)行時(shí)想輸入一些信息編譯開(kāi)發(fā)調(diào)試,如何實(shí)現(xiàn)這一功能
    2013-02-02
  • C#二分查找算法

    C#二分查找算法

    這篇文章介紹了C#中的二分查找算法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#中JSON轉(zhuǎn)為實(shí)體類(lèi)和List以及結(jié)合使用

    C#中JSON轉(zhuǎn)為實(shí)體類(lèi)和List以及結(jié)合使用

    開(kāi)發(fā)中經(jīng)常遇到將JSON字符串轉(zhuǎn)換為L(zhǎng)ist的需求,下面這篇文章主要給大家介紹了關(guān)于C#中JSON轉(zhuǎn)為實(shí)體類(lèi)和List以及結(jié)合使用的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • c# wpf如何更好的使用Application程序集資源

    c# wpf如何更好的使用Application程序集資源

    這篇文章主要介紹了c# wpf如何更好的使用Application程序集資源,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • WPF中NameScope的查找規(guī)則詳解

    WPF中NameScope的查找規(guī)則詳解

    這篇文章主要給大家介紹了關(guān)于WPF中NameScope的查找規(guī)則的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • [C#].NET中幾種Timer的使用實(shí)例

    [C#].NET中幾種Timer的使用實(shí)例

    本篇文章主要介紹了.NET中幾種Timer的使用,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • C# Cache緩存讀取的設(shè)置方法

    C# Cache緩存讀取的設(shè)置方法

    這篇文章主要介紹了C# Cache緩存讀取的設(shè)置方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 關(guān)于c#中單例模式的一些問(wèn)題

    關(guān)于c#中單例模式的一些問(wèn)題

    這篇文章主要給大家介紹了關(guān)于c#中單例模式的一些問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論