2012-02-17 3 views
0

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

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

+5

Lame способ: использовать 'WebClient' запросить главную страницу и посмотреть, если вы получите любой вид ответа. :/ –

+1

DL: Я не думаю, что это хромой вообще. – JohnC

ответ

3

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

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 
} 
         { 
Смежные вопросы