鉴于大量已部署的.NET应用程序,例如WCF服务或ASP.NET前端,我想创建一个允许我执行以下操作的应用程序:
除此之外,我还想检查应用程序是否正常运行,以及它是否有足够的权限在部署时访问数据库。
现在我正在考虑创建一个在每个项目中使用的模块,它运行一个WCF服务(自托管),将所有需要的信息传递给中央应用程序。
任何人对如何完成我提到的事情都有任何指示或想法?是否有更简单的方法来完成基本相同的事情?我的目标是以图形方式显示所有这些信息。
答案 0 :(得分:0)
嗯,你在一个问题中提出了几个问题,最好将其删除。但无论如何:
要获取IIS版本,您可以使用SERVER_SOFTWARE
服务器变量:
Request.ServerVariables["SERVER_SOFTWARE"];
点击此处查看更多信息:Request.ServerVariables Collection
要检查应用程序的.NET版本,请查看以下文章:C# code to determine which versions of the .NET Framework are installed on a system
要获取应用程序版本,您需要查看程序集内部,如下所示:
Assembly assembly = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
要检查应用程序池,请执行以下操作:
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命名空间,以通过图形或其他方式直观地显示它们。尝试它很好。 祝你好运!
答案 1 :(得分:0)
Ambodi回答了问题的第一部分,如何检查版本和池。
问题的第二部分“除此之外,我还想检查应用程序是否正常运行,以及它是否有足够的权限在部署时访问数据库。”有点复杂。
我的公司这样做:我们的WCF和其他需要监控的应用程序在作为Windows服务托管和管理的公共可执行文件(exe)中作为DLL运行。基本上,EXE充当工作程序的shell。可执行shell在内部定期检查其承载的程序的状态后,每隔10秒将心跳时间戳值发送到公共数据库表。
此外,我们还有一个控制器程序,通过阅读表格并查找听力> 10秒的任何程序来检查程序的运行状况。如果它们由于任何原因而失效,该控制器也可以重启这些shell程序。 (对不起,无法提供关于这些内容的示例代码。但是通过该描述,您可以了解我们正在做什么。)