萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> C#程序中操作IIS的應用程序池與站點分配

C#程序中操作IIS的應用程序池與站點分配

 一個應用程序池可以有多個站點,一個站點只對應一個應用程序池。

編程由來:

       存放在一個應用程序池裡的站點過多就不便於操作,所以需把其中一些站點分配到其他程序池中。

編程題目:

      用戶輸入一個數字或者一個數字+一個名字。程序對站點的所在應用程序池進行統計,用戶輸入的數字用於限制應用程序池裡面的最大容量數,如果超出該容量,將把超出的站點分配到其他程序應用池,或者新建的一個應用程序池,把站點分配進去。

如果用戶輸入一個數字的情況,將遍歷所有程序應用池;如果用戶輸入一個數字+一個名字的情況,將只對該名字的應用程序池進行操作;如果站點的名字和應用程序池的名字一樣,將不進行操作。

條件:

一、把DefautlAppPool應用程序池或者含有字符"AppPool #"的應用程序池裡面的超出的站點分配到AppPool #?應用程序池中("?"代表數字)

二、如果aspnet1應用程序池裡面的網站數超出用戶限制的數字,則分配到新建應用程序池的命名方式為aspnet1-?;("?"代表數字,表示從屬aspnet1下的分支)

三、如二設置aspnet2,aspnet3,aspnet4應用程序池

四、當網站名字和應用程序池的名字相同時,將不進行操作

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

這是我在公司裡面的任務,以下是我公開的代碼(還不屬於最優化的代碼,我把我的制作品拿出來以代表原創性,最優化的代碼暫時不公布,如有需要,請聯系博主!)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

新建一個控制台應用程序(C#編程語言,使用vs2005版本制作)

添加引用:System.DirectoryServices

 

class Program

   {

       static Hashtable hs = new Hashtable();//創建哈希表,保存池中的站點

       static string[] pls;//池數組

       static string[] nums;//應用程序池中各自包含的網站數量

       static Hashtable boolhs = new Hashtable();//創建哈希表,保存池中站點數量是否滿

 

       static void Main(string[] args)

       {

           string strNum = Console.ReadLine();//用戶輸入信息

 

           pls = GetApplicationPools();//獲取應用程序池名稱數組    

           foreach (string i in pls)//填充哈希表key值內容

           {

               hs.Add(i, "");

               boolhs.Add(i, "false");

           }

           getpoolweb();

           WebNums();

 

           if (strNum.Length > 1)//判斷用戶輸入的數字+名稱

           {

               string[] pw = strNum.Split(' ');

               for (int i = 0; i < pls.Length; i++)

               {

                   if (pls[i] == pw[1])

                   {

                       if (int.Parse(nums[i]) > int.Parse(pw[0]))

                       {

                           boolhs[pls[i]] = "true";//將該池定義站點數量已滿

                           GetName(pw[1], int.Parse(pw[0]), int.Parse(nums[i]));

                           Console.WriteLine("編譯完畢!");

                       }

                       else Console.WriteLine("該"+pw[1].ToString()+"應用程序池不需進行操作!");

                   }

               }

           }

           else//判斷用戶輸入的數字

           {

               for (int i = 0; i < pls.Length; i++)

               {

                   if (int.Parse(nums[i]) > int.Parse(strNum))//如果超出

                   {

                       boolhs[pls[i]] = "true";//將該池定義站點數量已滿

                       GetName(pls[i], int.Parse(strNum), int.Parse(nums[i]));

                       Console.WriteLine("編譯完畢!");

                   }

               }

           }

           Console.ReadLine();

       }

       /// <summary>

       /// 判斷網站名與應用程序池名稱是否相等

       /// </summary>

       /// <param name="wnames">網站名稱</param>

       /// <returns>相等為假</returns>

       public static bool chname(string wnames)

       {

           bool ctf = true;

           foreach (string i in pls)

           {

               if (wnames == i)

                   ctf = false;

               else ctf = true;

           }

           return ctf;

       }

       /// <summary>

       /// 獲得池數組對應的網站數量

       /// </summary>

       static void WebNums()

       {

           List<string> weblist = new List<string>();

           //string[] poolns = pooln.Split(',');

           foreach (string i in pls)

           {

               if (hs[i].ToString() != "")

                   weblist.Add(hs[i].ToString().Split(',').Length.ToString());

               else

                   weblist.Add("0");

           }

           nums = weblist.ToArray();

copyright © 萬盛學電腦網 all rights reserved