Запустить остановить пул приложений IIS

Я нашел этот код:

using System.DirectoryServices;

...

void Recycle(string appPool)
{
    string appPoolPath = "IIS://servername/W3SVC/AppPools/" + appPool;

    using (DirectoryEntry appPoolEntry = new DirectoryEntry(appPoolPath))
    {
        appPoolEntry.Invoke("Recycle", null);
        appPoolEntry.Close();
    }
}

Но когда я пытаюсь использовать этот код, у меня возникает эта ошибка:

Исключение было вызвано целью вызова., StackTrace: в System.DirectoryServices.DirectoryEntry.Invoke(String methodName, Object[] args)

Что я делаю неправильно?
или как получить информацию о состоянии моего пула приложений, и как я могу запускать и останавливать свой пул приложений без каких-либо специальных разрешений?

Я использую встроенную учетную запись: NetworkService


person Drakoo    schedule 05.04.2018    source источник
comment
Пожалуйста, предоставьте полную трассировку стека.   -  person Fildor    schedule 05.04.2018
comment
Это все, что я вижу в журнале :( Я думаю, это потому, что у меня нет определенных разрешений.   -  person Drakoo    schedule 05.04.2018


Ответы (1)


Попробуйте использовать классы Microsoft.Web.Administration.ServerManager и Microsoft.Web.Administration.ApplicationPool.

Пример:

        var serverManager = new ServerManager();
        var appPool = serverManager.ApplicationPools.FirstOrDefault(ap => ap.Name.Equals("AppPoolName"));
        appPool.Start();
person Idan Levi    schedule 05.04.2018
comment
У меня недостаточно прав, какое разрешение мне нужно? и как я могу добавить его? - person Drakoo; 05.04.2018
comment
Сообщение: Имя файла: redirection.config Ошибка: Не удается прочитать файл конфигурации из-за недостаточных разрешений, StackTrace: в Microsoft.Web.Administration.Interop.AppHostWritableAdminManager.GetAdminSection (String bstrSectionName, String bstrSectionPath) в [...] Microsoft.Web.Administration .ServerManager.ApplicationPoolCollectionCreator() в Microsoft.Web.Administration.Lazy.Initialize[T](T& target, CreateInstanceDelegate`1 valueFactory) в Microsoft.Web.Administration.ServerManager.get_ApplicationPools() - person Drakoo; 05.04.2018
comment
Попробуйте это решение. - person Idan Levi; 05.04.2018
comment
Предлагая MWA, вы также должны указать, что для этого требуются права администратора, а NetworkService не соответствует требованиям. - person Lex Li; 05.04.2018