您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> 编程语言综合 >> 正文

C#程序中操作IIS的应用程序池与站点分配

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 一个应用程序池可以有多个站点,一个站点只对应一个应用程序池。

编程由来:

       存放在一个应用程序池里的站点过多就不便于操作,所以需把其中一些站点分配到其他程序池中。

编程题目:

      用户输入一个数字或者一个数字+一个名字。程序对站点的所在应用程序池进行统计,用户输入的数字用于限制应用程序池里面的最大容量数,如果超出该容量,将把超出的站点分配到其他程序应用池,或者新建的一个应用程序池,把站点分配进去。

如果用户输入一个数字的情况,将遍历所有程序应用池;如果用户输入一个数字+一个名字的情况,将只对该名字的应用程序池进行操作;如果站点的名字和应用程序池的名字一样,将不进行操作。

条件:

一、把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();