正在基于目录重新启动IIS应用程序池

本文关键字:应用 应用程序 程序池 IIS 重新启动 于目录 | 更新日期: 2023-09-27 18:20:24

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

  1. 获取服务器上的所有应用程序池
  2. 循环浏览应用程序池的所有目录,直到找到匹配的目录
  3. 重新启动匹配的应用程序池

这就是我想做的全部,但我无法让它发挥作用。到目前为止,我已经设法将代码拖到一起,只返回应用程序池名称的列表:

    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)关联的目录带回来?

谢谢。

正在基于目录重新启动IIS应用程序池

可以试试这个

 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);