根据目录重新启动IIS应用程序池

时间:2015-11-02 14:23:25

标签: c# iis

我的项目差不多完成了,但是我似乎无法让最后一部分工作:

  1. 获取服务器上的所有应用程序池。
  2. 遍历应用程序池的所有目录,直到找到匹配项。
  3. 重新启动匹配的应用程序池。
  4. 这就是我想做的事情,但是我无法让它发挥作用。到目前为止,我设法将代码拖到一起的代码只返回应用程序池名称的列表:

        public static string[] FetchAppPools()
        {
            List<string> lvAppPools = new List<string>();
    
            DirectoryEntry lvWebService = new DirectoryEntry("IIS://localhost/W3SVC");
            IEnumerator ie = lvWebService.Children.GetEnumerator();
            DirectoryEntry lvServer = null;
    
            while(ie.MoveNext())
            {
                lvServer = (DirectoryEntry)ie.Current;
    
                if (lvServer.SchemaClassName == "IIsWebServer")
                    lvAppPools.Add(lvServer.Properties["ServerComment"][0].ToString());
            }
    
            return lvAppPools.ToArray();
        }
    

    我如何更改上面的代码以便还原与每个应用程序池相关的目录(C:\ inetpub \ Website1)?

    谢谢。

1 个答案:

答案 0 :(得分:2)

可以尝试这个

 var directoryEntry = new DirectoryEntry(APPLICATION_POOL_URL, USERNAME,   PASSWORD);

       // call to stop the Application Pool
     directoryEntry.Invoke("Stop", null);

      // call to start the Application Pool
          directoryEntry.Invoke("Start", null);

     // call to recycle the Application Pool
        directoryEntry.Invoke("Recycle", null);

基本上你必须打电话 directoryEntry.Invoke("Stop/Start/Recycle", null);