2014-02-19 121 views
0

鑑於大量部署.NET應用程序,如WCF服務或ASP.NET前端的,我想創建一個應用程序,允許我:監控部署.NET應用程序

  • 檢查它運行的機器上的IIS版本在
  • 檢查正在使用
  • 檢查應用程序的版本部署
  • 檢查應用程序池,它是
下運行的.NET Framework版本

除此之外,我還想檢查應用程序是否似乎正常運行,以及它在部署時是否有足夠的權限訪問數據庫。

現在我正在考慮創建一個在每個項目中使用的模塊,它運行一個WCF服務(自託管),將所有需要的信息傳遞給中央應用程序。

任何人有任何關於如何完成我提到的事情的指針或想法?有更簡單的方法來完成基本相同的事情嗎?我的目標是以圖形方式顯示所有這些信息。

回答

0

好吧,你已經問過一個問題,最好把它砍掉。但不管怎麼說:

  1. 要獲取IIS版本,你可以使用SERVER_SOFTWARE服務器變量:

    Request.ServerVariables["SERVER_SOFTWARE"]; 
    

    檢查它這裏瞭解更多:Request.ServerVariables Collection

  2. 要檢查的.NET版本您的應用程序,請檢查以下文章:C# code to determine which versions of the .NET Framework are installed on a system

  3. 要獲取應用程序版本,需要看大會裏面,像這樣:

    Assembly assembly = Assembly.GetExecutingAssembly(); 
    FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); 
    string version = fvi.FileVersion; 
    
  4. 檢查應用程序池,做類似以下內容:

    static void Main(string[] args) 
        { 
         DirectoryEntries appPools = 
          new DirectoryEntry("IIS://localhost/W3SVC/AppPools").Children; 
    
         foreach (DirectoryEntry appPool in appPools) 
         { 
          Console.WriteLine(appPool.Name); 
         } 
        } 
    

您可能感興趣的檢查System.Windows。 Forms.DataVisualization.Charting命名空間通過圖形或其他東西直觀地顯示它們。這是很好的嘗試。 祝你好運!

0

Ambodi回答了您的問題的第一部分,如何檢查版本和池。

問題的第二部分「除此之外,我還想檢查應用程序是否運行正常,以及它在部署時是否有足夠的權限訪問數據庫。」稍微複雜一點。

我的公司做了什麼:我們的WCF和其他需要監控的應用程序在作爲Windows服務託管和管理的通用可執行文件(exe)內以DLL的形式運行。所以基本上,EXE是工作程序的一部分。可執行shell在內部定期檢查它所託管的程序的狀態之後,每隔10秒將心跳時間戳值發送到公共數據庫表。

此外,我們有一個控制器程序,通過讀取表格並找到任何程序的聆聽超過10秒來檢查程序的健康狀況。如果出於任何原因,該控制器有權重新啓動這些外殼程序。 (對不起,不能提供你這個東西的示例代碼,但有了這樣的描述,你可能會知道我們在做什麼。)

+0

是的,布賴恩!這就是爲什麼我提到有太多問題捆綁在一起的原因:) – ambodi