Как удалить сайт в IIS, если у него есть сертификат SSL с подстановочным знаком? - PullRequest
1 голос
/ 07 ноября 2011

Мы работаем над решением SaaS и хотели бы автоматизировать создание и удаление системных экземпляров. Одним из шагов в этом процессе является удаление сайта IIS, но это оказалось довольно сложным.

Проблема заключается в том, что мы используем подстановочный SSL-сертификат для всех сайтов, и если вы попытаетесь удалить привязку HTTPS для сайта обычным способом, она удалит привязку для всех сайтов. Это связано с тем, что привязка имеет два компонента, один из которых используется всеми сайтами. Так работает IIS. Согласно Интернету, вы можете решить эту проблему, отредактировав файл applicationHost вручную или с помощью консольного приложения appcmd.exe для удаления сайта, поскольку он не использует API-интерфейс WMA, на который опирается IIS.

Решением, которое я пытаюсь заставить работать, является запуск приложения командной строки на моем административном веб-сайте, но я столкнулся с проблемой. Следующий код показывает, что я пытаюсь сделать, но я всегда получаю код ошибки 1168 для ERROR_NOT_FOUND. Я не уверен, что это значит, но если я запускаю ту же команду прямо в консоли, она работает как положено.

internal void DeleteSite(string iisName)
{
    // Impersonation of system admin user
    using (Permission.Elevate())
    {
        ProcessStartInfo start = new ProcessStartInfo();
        start.Arguments = string.Format(@"delete site ""{0}""", iisName);
        start.FileName = @"C:\Windows\System32\inetsrv\appcmd.exe";
        start.WindowStyle = ProcessWindowStyle.Hidden;
        start.CreateNoWindow = true;

        using (Process proc = Process.Start(start))
        {
            proc.WaitForExit();

            var exitCode = proc.ExitCode;
            if (exitCode > 0)
                throw new Exception("Error code " + exitCode);
        }
    }
}

Итак, вопрос в три раза. Есть ли лучшее общее решение (должно быть полностью автоматизировано)? Если нет, что я делаю не так в приведенном выше коде? И если ничего не помогает, что я могу сделать для отладки кодов ошибок из консольных приложений в целом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...