检查内部网站是否已启动并正在运行

时间:2013-05-08 12:15:25

标签: asp.net vb.net visual-studio-2010 web-applications

下午全部,

我需要创建一个基本上列出我公司内部网站的网页。我基本上需要检查状态屏幕,该屏幕显示Web应用程序是否已启动并且是否已失败。我还需要为与之关联的数据库实例执行相同的操作。

我正在寻找一些信息来帮助我在ASP.net 2010网站上创建一些VB代码,这些代码将为我完成每个网站的检查。

我不是100%确定如何完成此任务,但我想我可以Ping应用程序名称或它所在的网页?

我一直在查看以下site和代码示例以获得一些灵感,但我似乎没有进一步的前进。

有人可以请求建议最好的前进方式并提出一些可能对我有帮助的建议吗?

非常感谢提前。 贝蒂

1 个答案:

答案 0 :(得分:0)

我看到你使用了这项技术。网微软。我认为您的网站和应用程序都托管了“IIS”?

您应该可以使用“ DirectoryEntry ”类及其多个属性。 您可以这样,检查“ISS”上托管的网站或Web应用程序的状态,并检查应用程序池的状态。

要使用的命名空间:System.DirectoryServices(适用于 C#& ASP

有关“DirectoryEntry”及其属性的更多信息:DirectoryEntry Info

这样的事情:

//Get the webSite ID
public static int GetWebsiteID(string websiteName)
{
     string machineName = System.Environment.GetEnvironmentVariable("COMPUTERNAME");
     DirectoryEntry w3svc = new DirectoryEntry("IIS://"+machineName+"/w3svc");
     int id = 1;
     foreach(DirectoryEntry de in w3svc.Children)
     {
          if(de.SchemaClassName == "IIsWebServer" && de.Properties["ServerComment"][0].ToString() == websiteName)
           {
                id = int.Parse(de.Name);
           }

     }
     return id;
}

//Check statut of webSite
public void checkStatutWebSite()
{
     DirectoryEntry myWebSite = new DirectoryEntry(string.Format("IIS://" + machineName + "/w3svc/{0}/Root", GetWebsiteID("webSiteName")));
     ServerState state = (ServerState)Enum.Parse(typeof(ServerState), myWebSite.Properties["ServerState"].Value.ToString())
     if (state == ServerState.Stopped || state == ServerState.Paused)
     {
         //site is stopped
     }

}

public enum ServerState
{
    Unknown = 0,
    Starting = 1,
    Started = 2,
    Stopping = 3,
    Stopped = 4,
    Pausing = 5,
    Paused = 6,
    Continuing = 7
}

我希望这对你有所帮助。