监视已部署的.NET应用程

时间:2014-02-19 12:16:13

标签: .net wcf iis deployment configuration

鉴于大量已部署的.NET应用程序,例如WCF服务或ASP.NET前端,我想创建一个允许我执行以下操作的应用程序:

  • 检查正在运行的计算机上的IIS版本
  • 检查正在使用的.NET框架版本
  • 检查部署的应用程序的版本
  • 检查
  • 下运行的应用程序池

除此之外,我还想检查应用程序是否正常运行,以及它是否有足够的权限在部署时访问数据库。

现在我正在考虑创建一个在每个项目中使用的模块,它运行一个WCF服务(自托管),将所有需要的信息传递给中央应用程序。

任何人对如何完成我提到的事情都有任何指示或想法?是否有更简单的方法来完成基本相同的事情?我的目标是以图形方式显示所有这些信息。

2 个答案:

答案 0 :(得分: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);
            }
        }
    
  5. 您可能有兴趣检查System.Windows.Forms.DataVisualization.Charting命名空间,以通过图形或其他方式直观地显示它们。尝试它很好。 祝你好运!

答案 1 :(得分:0)

Ambodi回答了问题的第一部分,如何检查版本和池。

问题的第二部分“除此之外,我还想检查应用程序是否正常运行,以及它是否有足够的权限在部署时访问数据库。”有点复杂。

我的公司这样做:我们的WCF和其他需要监控的应用程序在作为Windows服务托管和管理的公共可执行文件(exe)中作为DLL运行。基本上,EXE充当工作程序的shell。可执行shell在内部定期检查其承载的程序的状态后,每隔10秒将心跳时间戳值发送到公共数据库表。

此外,我们还有一个控制器程序,通过阅读表格并查找听力> 10秒的任何程序来检查程序的运行状况。如果它们由于任何原因而失效,该控制器也可以重启这些shell程序。 (对不起,无法提供关于这些内容的示例代码。但是通过该描述,您可以了解我们正在做什么。)