Как определить, в каком пуле приложений я сейчас работаю?(IIS6)

StackOverflow https://stackoverflow.com/questions/333391

  •  22-07-2019
  •  | 
  •  

Вопрос

Мне нужно знать, как определить текущий пул приложений, в котором я работаю, чтобы я мог программно выполнить его переработку.

Кто-нибудь знает, как это сделать для IIS6?

Мой текущий код для переработки пула приложений:

    /// <summary>
    /// Recycle an application pool
    /// </summary>
    /// <param name="IIsApplicationPool"></param>
    public static void RecycleAppPool(string IIsApplicationPool) {
        ManagementScope scope = new ManagementScope(@"\\localhost\root\MicrosoftIISv2");
        scope.Connect();
        ManagementObject appPool = new ManagementObject(scope, new ManagementPath("IIsApplicationPool.Name='W3SVC/AppPools/" + IIsApplicationPool + "'"), null);

        appPool.InvokeMethod("Recycle", null, null);
    }   
Это было полезно?

Решение

И после поиска я сам нашел ответ:

   public string GetAppPoolName() {

        string AppPath = Context.Request.ServerVariables["APPL_MD_PATH"];

        AppPath = AppPath.Replace("/LM/", "IIS://localhost/");
        DirectoryEntry root = new DirectoryEntry(AppPath);
        if ((root == null)) {
            return " no object got";
        }
        string AppPoolId = (string)root.Properties["AppPoolId"].Value;
        return AppPoolId;
    }

Хм.Им нужен способ позволить мне сделать свой ответ САМЫМ ответом.

Другие советы

Я тоже нашел этот, и он сработал для меня. Обратите внимание, что вам может понадобиться включить ссылку на using System.DirectoryServices ;

    private static string GetCurrentApplicationPoolId()
    {
        string virtualDirPath = AppDomain.CurrentDomain.FriendlyName;
        virtualDirPath = virtualDirPath.Substring(4);
        int index = virtualDirPath.Length + 1;
        index = virtualDirPath.LastIndexOf("-", index - 1, index - 1);
        index = virtualDirPath.LastIndexOf("-", index - 1, index - 1);
        virtualDirPath = "IIS://localhost/" + virtualDirPath.Remove(index);
        DirectoryEntry virtualDirEntry = new DirectoryEntry(virtualDirPath);
        return virtualDirEntry.Properties["AppPoolId"].Value.ToString();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top