2012-02-17 70 views
0

我有一個腳本收集IIS中的所有站點,並通過電子郵件發送一些審計細節。我想對其進行調整,以便僅通過電子郵件發送正在運行的網站。我不需要知道停止的網站。我已經參考了IIS中的所有DirectoryEntry,但我沒有看到任何可以指示它是否正在運行的屬性。以編程方式確定IIS站點是否正在運行

這是如何完成的?理想情況下,這應該在IIS6和IIS7上運行。

+5

拉梅方式:使用'WebClient'請求主頁,看看你得到任何形式的迴應。 :/ – 2012-02-17 18:25:55

+1

DL:我根本不認爲這是跛腳。 – JohnC 2012-02-17 18:28:02

回答

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 
} 
         { 
相關問題