Alex2 101 Ответов: 1

Как остановить различные пулы приложений в C#?


Я пытаюсь остановить пул приложений в c#.Но я получаю исключение
"Неизвестная ошибка (0x80005000)".

Что я уже пробовал:

#region IIS Memory Management Stop Pool//Added by Mathew on 19/06/2017
      public bool StopPool(string appPoolName)
      {
          string errorPath = ConfigurationManager.AppSettings["SERVICE_ERROR_PATH"].ToString().Trim();
          string ErrorFile = "Application_Pool_Reset_" + DateTime.Now.ToString("ddMMyyyy") + ".txt";
          try
          {

              Common.WriteTextFile(errorPath + ErrorFile, "----------------------------------------------------------------------------------------------------"
                  + Environment.NewLine);
              if (appPoolName == null)
              {
                  throw new ArgumentNullException("applicationPoolName");
              }

              //using (DirectoryEntry applicationPool = new
              //DirectoryEntry("IIS://localhost/W3SVC/AppPools/" + appPoolName))
              //{
              //    Common.WriteTextFile(errorPath + ErrorFile, "-----------------------------Stopping Application Pool " + appPoolName + " ------------------------------------------------");
              //    applicationPool.Invoke("Stop");
              //    Common.WriteTextFile(errorPath + ErrorFile, "-----------------------------Stop Application Pool Invoked" + appPoolName + " ------------------------------------------------");
              //}
               string appPoolPath = @"IIS://" + System.Environment.MachineName + "/W3SVC/AppPools/" + appPoolName;
                      try
                      {
                          DirectoryEntry w3svc = new DirectoryEntry(appPoolPath);
                          w3svc.Invoke("Stop", null);
                         // status();
                      }
                      catch (Exception ex)
                      {
                          //Response.Write(ex.ToString());
                      }

              //Common.WriteTextFile(errorPath + ErrorFile, DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + Environment.NewLine + "Service Hanging Monitoring End..." + Environment.NewLine);
          }
          catch (Exception ex)
          {
              Common.WriteTextFile(errorPath, "Error in StopPool(). Sys. Error:" + ex.Message + ex.StackTrace);
              return false;
          }
          return true;

      }

1 Ответов

Рейтинг:
1

RickZeeland

См. эту статью: Используйте C# для управления IIS[^]
Также см. раздел "Управление IIS с помощью DirectoryEntry" в этой статье CodeProject: Howto: (Почти) Все в Active Directory через C#[^]