2014-02-19 33 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