Программно определить, работает сайт IIS или нет - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть скрипт, который собирает все сайты в IIS и отправляет по электронной почте несколько деталей для аудита.Я хочу настроить его так, чтобы он работал только с сайтами, работающими по электронной почте.Мне не нужно знать о сайтах, которые остановлены.У меня уже есть ссылка на все DirectoryEntry s в IIS, но я не вижу никаких свойств, которые бы указывали, работает он или нет.

Как это сделать?В идеале это должно работать как на IIS6, так и на IIS7.

1 Ответ

3 голосов
/ 18 февраля 2012

Коллекция DirectoryEntry.Properties, содержит свойство ServerState. Это не очень хорошо задокументировано, но я нашел этого блоггера , который создал собственное перечисление, которое кажется правильным. Перечисление

public enum ServerState
{
    Unknown = 0,
    Starting = 1,
    Started = 2,
    Stopping = 3,
    Stopped = 4,
    Pausing = 5,
    Paused = 6,
    Continuing = 7
}

Используя эту логику, чтобы проверить, работает ли DirectoryEntry, вы должны использовать:

DirectoryEntry entry;
ServerState state = (ServerState)Enum.Parse(typeof(ServerState), entry.Properties["ServerState"].Value.ToString())
if (state == ServerState.Stopped || state == ServerState.Paused)
{
    //site is stopped
}
                        {
...